Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Frank Kabel wrote
application.enableevents = false curious: why is this line needed? -- David |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
"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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
"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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
"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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() -- 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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Linking worksheets in the same workbook by names not cells | Excel Discussion (Misc queries) | |||
Linking tab names to a cell in the sheet | Excel Discussion (Misc queries) | |||
Linking Cells accross Workbooks using Column Names | Excel Discussion (Misc queries) | |||
Sheet names linking to cell | Excel Discussion (Misc queries) | |||
Linking Cells to a file that changes names | Excel Discussion (Misc queries) |