How can I name Worksheet Tabs based on some king of reference?

G

Guest

Does anyone know if it's possible to Name an Excel Worksheet Tab based on
some kind of reference (cell) or calculation or function?
 
G

Guest

Gord,
Thank You! Actually this exact one didn't work; but in searching through
these forums - I found & used this:
Sub wsname()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Name = ws.Range("B4").Value
Next ws
End Sub
But, in doing so, recognize and salute you as a true 'Excel MVP'
 
G

Gord Dibben

What is "doesn't work"?

It is meant to run automatically on a calculated change in C2 value.

Did you place the code into the sheet module?

Did you check out the google search thread?

The code you have chosen is a regular macro and requires you to to run manually.


Gord
 
G

Guest

Forget about that now; I'm getting fancier. I saw that you gave someone code
to Create Tabs based on a list; and simultaneously have those new Worksheet
be a copy of the Original "Master". This is that Code: But it hasn't worked
for me! Can you test it and help me figure out what I'm doing wrong?

Assuming Master sheet is named "Master" and has a list in A1:A100

Sub Copy_Sheet()
Dim rCell As Range
For Each rCell In Sheets("Master").Range("A1:A100")
ActiveSheet.Copy After:=ActiveSheet
ActiveSheet.Name = rCell.Value
ActiveSheet.Range("B2").Value = rCell.Value
Next rCell
End Sub

Each new sheet will be a copy of "Master" with a new name and have that sheet
name in B2
 
G

Gord Dibben

Works for me but I used a limited range of A1:A20 when I tested.

Make sure you have enough names in Master sheet range A1:A100 or you will throw
an error.

None of the names can be duplicates.

Test it yourself with a,b,c,d,e,f,g,h,i in A1:A9

I would go with Dave Peterson's code istead of the code you have.

Sub CreateNameSheets()
' by Dave Peterson
' List sheetnames required in col A in a sheet: List
' Sub will copy sheets based on the sheet named as: Template
' and name the sheets accordingly

Dim TemplateWks As Worksheet
Dim ListWks As Worksheet
Dim ListRng As Range
Dim myCell As Range

Set TemplateWks = Worksheets("Master")
Set ListWks = Worksheets("list")
With ListWks
Set ListRng = .Range("a1", .Cells(.Rows.Count, "A").End(xlUp))
End With

For Each myCell In ListRng.Cells
TemplateWks.Copy After:=Worksheets(Worksheets.Count)
On Error Resume Next
ActiveSheet.Name = myCell.Value
If Err.Number <> 0 Then
MsgBox "Please fix: " & ActiveSheet.Name
Err.Clear
End If
On Error GoTo 0
Next myCell

End Sub


Gord
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top