Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,885
Default Linking sheet tab names to cells

Hi
you'll need an event procedure (see
http://www.cpearson.com/excel/events.htm for more details): Put the
following code in your worksheet module:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Then Exit Sub
If Intersect(Target, Me.Range("A1")) Is Nothing Then Exit Sub
On Error GoTo CleanUp
application.enableevents = false
With Target
If .Value < "" Then
Me.Name = .value
End If
End With
CleanUp:
Application.EnableEvents = True
End Sub

--
Regards
Frank Kabel
Frankfurt, Germany

"kevin" schrieb im Newsbeitrag
...
Hi,

Do you know a way in VBA to change the name of a sheet by linking it

to a cell. ie if cell A1 is "Monday" the name on the sheet tab is
Monday. but will change if i put Tuesday in A1

Regards
Kevin


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 195
Default Linking sheet tab names to cells

Frank Kabel wrote

application.enableevents = false


curious: why is this line needed?

--
David
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 97
Default Linking sheet tab names to cells

"David" wrote...
Frank Kabel wrote
application.enableevents = false


curious: why is this line needed?


Step through Frank's macro in the VBE and you'll see why.

--
To top-post is human, to bottom-post and snip is sublime.
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 97
Default Linking sheet tab names to cells

"David" wrote...
Frank Kabel wrote

application.enableevents = false


curious: why is this line needed?


Sorry. I screwed up in my previous response. This isn't necessary.

--
To top-post is human, to bottom-post and snip is sublime.
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 97
Default Linking sheet tab names to cells

"Frank Kabel" wrote...
...

Quibbles:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Then Exit Sub
If Intersect(Target, Me.Range("A1")) Is Nothing Then Exit Sub


You've already established that Target must be a single cell, so no need for
Intersect. Just compare Target's address to "A1". Indeed, both If statements
above could be replaced by

If Target.Address(0, 0) < "A1" Then Exit Sub

On Error GoTo CleanUp
application.enableevents = false


Wrote this in your newsreader?

With Target
If .Value < "" Then
Me.Name = .value
End If
End With


If .Value were "", then Me.Name = .Value would throw a runtime error, just as
any other invalid worksheet name to which A1 could evaluate. If such a runtime
error occurs, the original worksheet name remains unchanged. So this entire With
block could be replaced by

Me.Name = Target.Value

CleanUp:
Application.EnableEvents = True
End Sub


--
To top-post is human, to bottom-post and snip is sublime.


  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,885
Default Linking sheet tab names to cells



--
Regards
Frank Kabel
Frankfurt, Germany

"Harlan Grove" schrieb im Newsbeitrag
...
"David" wrote...
Frank Kabel wrote

application.enableevents = false


curious: why is this line needed?


Sorry. I screwed up in my previous response. This isn't necessary.



Hi Harlan
don't agree :-)
Changing the worksheet name will lead (AFAIK) to a recalculation of
formulas which reference this worksheet. So this could for example
trigger a worksheet_calculate event

Frank

  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,885
Default Linking sheet tab names to cells

Quibbles:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count 1 Then Exit Sub
If Intersect(Target, Me.Range("A1")) Is Nothing Then Exit Sub


You've already established that Target must be a single cell, so no

need for
Intersect. Just compare Target's address to "A1". Indeed, both If

statements
above could be replaced by


Ack
typical copy+paste function and you're of course right: in this case
not required and could be simplified as you posted.

[...]
On Error GoTo CleanUp
application.enableevents = false


Wrote this in your newsreader?


got me :-)


With Target
If .Value < "" Then
Me.Name = .value
End If
End With


If .Value were "", then Me.Name = .Value would throw a runtime error,

just as
any other invalid worksheet name to which A1 could evaluate. If such

a runtime
error occurs, the original worksheet name remains unchanged. So this

entire With
block could be replaced by


Good point though I like to prevent throwing an error (but then I
should have checked for existing or valid worksheet names also...)


Regards
Frank

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Linking worksheets in the same workbook by names not cells rohobby Excel Discussion (Misc queries) 1 April 16th 09 04:15 AM
Linking tab names to a cell in the sheet Hankjam[_2_] Excel Discussion (Misc queries) 1 July 25th 08 09:26 PM
Linking Cells accross Workbooks using Column Names Jimmy944 Excel Discussion (Misc queries) 0 July 17th 08 10:23 AM
Sheet names linking to cell Tom Excel Discussion (Misc queries) 4 September 27th 07 09:09 AM
Linking Cells to a file that changes names Carlmac4 Excel Discussion (Misc queries) 1 October 9th 06 07:01 PM


All times are GMT +1. The time now is 07:20 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"