Rename Sheet using Cell Reference

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Is is possible to automatically rename a worksheet based on the contents of a
cell? For Example:

Cell A1 contains Bob Smith - I'd like the worksheet to automatically name
itself Bob Smith, even if the contents of A1 change.

I've done a search of the discussions here and found:

=MID(CELL("filename",a1),SEARCH("]",CELL("filename",a1))+1,1024)

The above example however works in reverse from what I'm looking for and
copies the worksheet name to the cell. What I'd like to accomplish is
copying the cell to the worksheet name if possible.
 
Right click the sheet and select view code and paste in

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
ActiveSheet.Name = Target.Value
End If
End Sub
 
Instead of using Activesheet, I'd use the sheet that owns the code. Activesheet
may not cause any trouble--until a macro runs that changes A1 on that sheet--and
that sheet isn't active.

In fact, I'd add a little checking (and some completely arbitrary changes,
<bg>):

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'one cell at a time
if target.cells.count > 1 then exit sub

If Intersect(Target, Me.Range("A1")) Is Nothing Then
exit sub 'nots and nothings confuse me!
else
on error resume next
Me.Name = Target.Value
if err.number <> 0 then
beep 'or msgbox "Was not renamed!"
err.clear
end if
on error goto 0
End If

End Sub

======
To the OP:
Remember that this event will fire when you're typing a new value--not the
result of a calculation.

And if you're typing in dates, you'll want to format the date to avoid invalid
worksheet names. Something like:

Me.Name = Format(Target.Value, "yyyymmdd")



Peo said:
Right click the sheet and select view code and paste in

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
ActiveSheet.Name = Target.Value
End If
End Sub

--
Regards,

Peo Sjoblom

RDana said:
Is is possible to automatically rename a worksheet based on the contents
of a
cell? For Example:

Cell A1 contains Bob Smith - I'd like the worksheet to automatically name
itself Bob Smith, even if the contents of A1 change.

I've done a search of the discussions here and found:

=MID(CELL("filename",a1),SEARCH("]",CELL("filename",a1))+1,1024)

The above example however works in reverse from what I'm looking for and
copies the worksheet name to the cell. What I'd like to accomplish is
copying the cell to the worksheet name if possible.
 
You are such a nanny! <bg>

Peo

Dave Peterson said:
Instead of using Activesheet, I'd use the sheet that owns the code.
Activesheet
may not cause any trouble--until a macro runs that changes A1 on that
sheet--and
that sheet isn't active.

In fact, I'd add a little checking (and some completely arbitrary changes,
<bg>):

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'one cell at a time
if target.cells.count > 1 then exit sub

If Intersect(Target, Me.Range("A1")) Is Nothing Then
exit sub 'nots and nothings confuse me!
else
on error resume next
Me.Name = Target.Value
if err.number <> 0 then
beep 'or msgbox "Was not renamed!"
err.clear
end if
on error goto 0
End If

End Sub

======
To the OP:
Remember that this event will fire when you're typing a new value--not the
result of a calculation.

And if you're typing in dates, you'll want to format the date to avoid
invalid
worksheet names. Something like:

Me.Name = Format(Target.Value, "yyyymmdd")



Peo said:
Right click the sheet and select view code and paste in

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
ActiveSheet.Name = Target.Value
End If
End Sub

--
Regards,

Peo Sjoblom

RDana said:
Is is possible to automatically rename a worksheet based on the
contents
of a
cell? For Example:

Cell A1 contains Bob Smith - I'd like the worksheet to automatically
name
itself Bob Smith, even if the contents of A1 change.

I've done a search of the discussions here and found:

=MID(CELL("filename",a1),SEARCH("]",CELL("filename",a1))+1,1024)

The above example however works in reverse from what I'm looking for
and
copies the worksheet name to the cell. What I'd like to accomplish is
copying the cell to the worksheet name if possible.
 
I take it that nanny is something very nice in that Swedish language that you
speak!

It must mean something totally different than the English word that looks the
same.

<hehehe>


Peo said:
You are such a nanny! <bg>

Peo

Dave Peterson said:
Instead of using Activesheet, I'd use the sheet that owns the code.
Activesheet
may not cause any trouble--until a macro runs that changes A1 on that
sheet--and
that sheet isn't active.

In fact, I'd add a little checking (and some completely arbitrary changes,
<bg>):

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'one cell at a time
if target.cells.count > 1 then exit sub

If Intersect(Target, Me.Range("A1")) Is Nothing Then
exit sub 'nots and nothings confuse me!
else
on error resume next
Me.Name = Target.Value
if err.number <> 0 then
beep 'or msgbox "Was not renamed!"
err.clear
end if
on error goto 0
End If

End Sub

======
To the OP:
Remember that this event will fire when you're typing a new value--not the
result of a calculation.

And if you're typing in dates, you'll want to format the date to avoid
invalid
worksheet names. Something like:

Me.Name = Format(Target.Value, "yyyymmdd")



Peo said:
Right click the sheet and select view code and paste in

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
ActiveSheet.Name = Target.Value
End If
End Sub

--
Regards,

Peo Sjoblom

Is is possible to automatically rename a worksheet based on the
contents
of a
cell? For Example:

Cell A1 contains Bob Smith - I'd like the worksheet to automatically
name
itself Bob Smith, even if the contents of A1 change.

I've done a search of the discussions here and found:

=MID(CELL("filename",a1),SEARCH("]",CELL("filename",a1))+1,1024)

The above example however works in reverse from what I'm looking for
and
copies the worksheet name to the cell. What I'd like to accomplish is
copying the cell to the worksheet name if possible.
 
Back
Top