ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Need to loop (https://www.excelbanter.com/excel-programming/391345-need-loop.html)

GregR

Need to loop
 
I have this code, which adds sheets to a workbook based on a named
range. It renames the sheets to the name in the range, but errors on
the second name change because it already exists. How do I get he
macro to rename sheets based on the names in the named list. TIA

Sub AddRangeOfSheets()

Dim c As Range

For Each c In Sheets("sheet1").Range("SList")
If Not IsEmpty(c) Then
CreateSheet (c.Value)
End If
Next c

End Sub

Sub CreateSheet(ShName As String)

Dim CreateSheet As Worksheet

On Error GoTo errh
Set CreateSheet = ActiveWorkbook.Worksheets(ShName)
Exit Sub

errh:
Set CreateSheet = ActiveWorkbook.Worksheets.Add
CreateSheet.Name = ShName

End Sub

Thanks, Greg


PCLIVE

Need to loop
 
There are parts of your code that I don't understand.

I'm assuming "SList" is a named range.
I'm assuming "CreateSheet" is an attempt to add a worksheet...or is it
trying to call another Macro?
My suggestion is below

Sub AddRangeOfSheets()
Dim c As Range

For Each c In Range("SList")
If Not IsEmpty(c) Then
Sheets.Add
ActiveSheet.Name = c.Value
End If
Next c

End Sub

HTH,
Paul


"GregR" wrote in message
ups.com...
I have this code, which adds sheets to a workbook based on a named
range. It renames the sheets to the name in the range, but errors on
the second name change because it already exists. How do I get he
macro to rename sheets based on the names in the named list. TIA

Sub AddRangeOfSheets()

Dim c As Range

For Each c In Sheets("sheet1").Range("SList")
If Not IsEmpty(c) Then
CreateSheet (c.Value)
End If
Next c

End Sub

Sub CreateSheet(ShName As String)

Dim CreateSheet As Worksheet

On Error GoTo errh
Set CreateSheet = ActiveWorkbook.Worksheets(ShName)
Exit Sub

errh:
Set CreateSheet = ActiveWorkbook.Worksheets.Add
CreateSheet.Name = ShName

End Sub

Thanks, Greg




GregR

Need to loop
 
On Jun 14, 2:39 pm, "PCLIVE" wrote:
There are parts of your code that I don't understand.

I'm assuming "SList" is a named range.
I'm assuming "CreateSheet" is an attempt to add a worksheet...or is it
trying to call another Macro?
My suggestion is below

Sub AddRangeOfSheets()
Dim c As Range

For Each c In Range("SList")
If Not IsEmpty(c) Then
Sheets.Add
ActiveSheet.Name = c.Value
End If
Next c

End Sub

HTH,
Paul

"GregR" wrote in message

ups.com...



I have this code, which adds sheets to a workbook based on a named
range. It renames the sheets to the name in the range, but errors on
the second name change because it already exists. How do I get he
macro to rename sheets based on the names in the named list. TIA


Sub AddRangeOfSheets()


Dim c As Range


For Each c In Sheets("sheet1").Range("SList")
If Not IsEmpty(c) Then
CreateSheet (c.Value)
End If
Next c


End Sub


Sub CreateSheet(ShName As String)


Dim CreateSheet As Worksheet


On Error GoTo errh
Set CreateSheet = ActiveWorkbook.Worksheets(ShName)
Exit Sub


errh:
Set CreateSheet = ActiveWorkbook.Worksheets.Add
CreateSheet.Name = ShName


End Sub


Thanks, Greg- Hide quoted text -


- Show quoted text -


Paul, my code and your code work just fine if there are no blank rows
in the named range, but there are. How do I overcome this hurdle?

Thanks

Greg


PCLIVE

Need to loop
 
Greg,
Try stepping through this code using F8 and find out exactly which line the
code fails on. I know you said that it fails when there are blank cells in
your range, but that doesn't happen on my end. My guess is that the cells
that appear empty are not actally empty and that the code fails on
"ActiveSheet.Name= c.Value". This would fail if the cell value contains an
illegal character for a Worksheet name. See if that's it.


Sub AddRangeOfSheets()
Dim c As Range

For Each c In Range("SList")
If Not IsEmpty(c) Then
Sheets.Add
ActiveSheet.Name = c.Value
End If
Sheets("Sheet1").Activate
Next c

End Sub

HTH,
Paul


"GregR" wrote in message
oups.com...
On Jun 14, 2:39 pm, "PCLIVE" wrote:
There are parts of your code that I don't understand.

I'm assuming "SList" is a named range.
I'm assuming "CreateSheet" is an attempt to add a worksheet...or is it
trying to call another Macro?
My suggestion is below

Sub AddRangeOfSheets()
Dim c As Range

For Each c In Range("SList")
If Not IsEmpty(c) Then
Sheets.Add
ActiveSheet.Name = c.Value
End If
Next c

End Sub

HTH,
Paul

"GregR" wrote in message

ups.com...



I have this code, which adds sheets to a workbook based on a named
range. It renames the sheets to the name in the range, but errors on
the second name change because it already exists. How do I get he
macro to rename sheets based on the names in the named list. TIA


Sub AddRangeOfSheets()


Dim c As Range


For Each c In Sheets("sheet1").Range("SList")
If Not IsEmpty(c) Then
CreateSheet (c.Value)
End If
Next c


End Sub


Sub CreateSheet(ShName As String)


Dim CreateSheet As Worksheet


On Error GoTo errh
Set CreateSheet = ActiveWorkbook.Worksheets(ShName)
Exit Sub


errh:
Set CreateSheet = ActiveWorkbook.Worksheets.Add
CreateSheet.Name = ShName


End Sub


Thanks, Greg- Hide quoted text -


- Show quoted text -


Paul, my code and your code work just fine if there are no blank rows
in the named range, but there are. How do I overcome this hurdle?

Thanks

Greg




GregR

Need to loop
 
On Jun 15, 6:55 am, "PCLIVE" wrote:
Greg,
Try stepping through this code using F8 and find out exactly which line the
code fails on. I know you said that it fails when there are blank cells in
your range, but that doesn't happen on my end. My guess is that the cells
that appear empty are not actally empty and that the code fails on
"ActiveSheet.Name= c.Value". This would fail if the cell value contains an
illegal character for a Worksheet name. See if that's it.

Sub AddRangeOfSheets()
Dim c As Range

For Each c In Range("SList")
If Not IsEmpty(c) Then
Sheets.Add
ActiveSheet.Name = c.Value
End If
Sheets("Sheet1").Activate
Next c

End Sub

HTH,
Paul

"GregR" wrote in message

oups.com...



On Jun 14, 2:39 pm, "PCLIVE" wrote:
There are parts of your code that I don't understand.


I'm assuming "SList" is a named range.
I'm assuming "CreateSheet" is an attempt to add a worksheet...or is it
trying to call another Macro?
My suggestion is below


Sub AddRangeOfSheets()
Dim c As Range


For Each c In Range("SList")
If Not IsEmpty(c) Then
Sheets.Add
ActiveSheet.Name = c.Value
End If
Next c


End Sub


HTH,
Paul


"GregR" wrote in message


roups.com...


I have this code, which adds sheets to a workbook based on a named
range. It renames the sheets to the name in the range, but errors on
the second name change because it already exists. How do I get he
macro to rename sheets based on the names in the named list. TIA


Sub AddRangeOfSheets()


Dim c As Range


For Each c In Sheets("sheet1").Range("SList")
If Not IsEmpty(c) Then
CreateSheet (c.Value)
End If
Next c


End Sub


Sub CreateSheet(ShName As String)


Dim CreateSheet As Worksheet


On Error GoTo errh
Set CreateSheet = ActiveWorkbook.Worksheets(ShName)
Exit Sub


errh:
Set CreateSheet = ActiveWorkbook.Worksheets.Add
CreateSheet.Name = ShName


End Sub


Thanks, Greg- Hide quoted text -


- Show quoted text -


Paul, my code and your code work just fine if there are no blank rows
in the named range, but there are. How do I overcome this hurdle?


Thanks


Greg- Hide quoted text -


- Show quoted text -


Paul, that was it. I had an illegal character in the range for naming
sheets. Thanks

Greg



All times are GMT +1. The time now is 05:28 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com