Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I **think** that you have declared "name" (with the small "n") as a variable
somewhere where the current module can see it. I can duplicate your problem easily enough as follows... Dim name As String Sub RunAll() For Each Worksheet In Worksheets Select Case Worksheet.name Case "Report1" Case Else Worksheet.Activate If ActiveSheet.name = "BGE" _ Then ActiveSheet.name = "Sheet999" End If End Select Next Worksheet End Sub The "n" in the property name for your Worksheet variable in the Select Case statement will always be lower case matching the case used in the Dim statement. As Dave pointed out in his response, it is a bad idea to use data type names, property names, or built-in function names as names for your own variables. -- Rick (MVP - Excel) "kevlarmcc" wrote in message ... I am not sure I am explaining it correctly. It's not the value for Name it is the actual object Name. Here is the code that works: Sub RunAll() For Each Worksheet In Worksheets Select Case Worksheet.name 'This just skips the first sheet and isn't crucial Case "Report1" Case Else 'Here is the issue; note name instead of Name Worksheet.Activate If ActiveSheet.name = "BGE" _ Then ActiveSheet.name = "Sheet999" End Select Next Worksheet End Sub Forgive me if the misunderstanding is mine; I am new to Excel code! "Mike H" wrote: Hi, Text comparisons using = in VB are case sensitive. If you want to ignore case try this simpler version of your code Sub Rename_Shts() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If UCase(ws.Name) = "BGE" Then ws.Name = "Sheet999" End If Next End Sub -- Mike When competing hypotheses are otherwise equal, adopt the hypothesis that introduces the fewest assumptions while still sufficiently answering the question. "kevlarmcc" wrote: I have two copies of code that I swear are indentical except for the captialization of an object, which seems to be automatic. Somehow one copy of the code doesn't auto cap the object and it is that copy that works. Code is below: Sub RunAll() For Each Worksheet In Worksheets Select Case Worksheet.Name Case "Report 1" Case Else Worksheet.Activate If ActiveSheet.Name = "BGE" Then _ ActiveSheet.Name = "Sheet999" End Select Next Worksheet End Sub When Name is capped, it doesn't work. With lowercase name it works. I can't seem to replicate the non-capped object because when writing new code it won't let me not capitalize it. I am not sure what I did to get the object not capitalized in the first place. Anyone understand this? |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks Rick. I found one problem. The sheet named BGE actually has a space at
the end of it, so the comparison wasn't being recognized. When I add the space in the quotes "BGE " rather than "BGE" it works. I am sorry to have wasted everyone's time, but I have learned from everyones' help. "Rick Rothstein" wrote: I **think** that you have declared "name" (with the small "n") as a variable somewhere where the current module can see it. I can duplicate your problem easily enough as follows... Dim name As String Sub RunAll() For Each Worksheet In Worksheets Select Case Worksheet.name Case "Report1" Case Else Worksheet.Activate If ActiveSheet.name = "BGE" _ Then ActiveSheet.name = "Sheet999" End If End Select Next Worksheet End Sub The "n" in the property name for your Worksheet variable in the Select Case statement will always be lower case matching the case used in the Dim statement. As Dave pointed out in his response, it is a bad idea to use data type names, property names, or built-in function names as names for your own variables. -- Rick (MVP - Excel) "kevlarmcc" wrote in message ... I am not sure I am explaining it correctly. It's not the value for Name it is the actual object Name. Here is the code that works: Sub RunAll() For Each Worksheet In Worksheets Select Case Worksheet.name 'This just skips the first sheet and isn't crucial Case "Report1" Case Else 'Here is the issue; note name instead of Name Worksheet.Activate If ActiveSheet.name = "BGE" _ Then ActiveSheet.name = "Sheet999" End Select Next Worksheet End Sub Forgive me if the misunderstanding is mine; I am new to Excel code! "Mike H" wrote: Hi, Text comparisons using = in VB are case sensitive. If you want to ignore case try this simpler version of your code Sub Rename_Shts() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If UCase(ws.Name) = "BGE" Then ws.Name = "Sheet999" End If Next End Sub -- Mike When competing hypotheses are otherwise equal, adopt the hypothesis that introduces the fewest assumptions while still sufficiently answering the question. "kevlarmcc" wrote: I have two copies of code that I swear are indentical except for the captialization of an object, which seems to be automatic. Somehow one copy of the code doesn't auto cap the object and it is that copy that works. Code is below: Sub RunAll() For Each Worksheet In Worksheets Select Case Worksheet.Name Case "Report 1" Case Else Worksheet.Activate If ActiveSheet.Name = "BGE" Then _ ActiveSheet.Name = "Sheet999" End Select Next Worksheet End Sub When Name is capped, it doesn't work. With lowercase name it works. I can't seem to replicate the non-capped object because when writing new code it won't let me not capitalize it. I am not sure what I did to get the object not capitalized in the first place. Anyone understand this? . |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Strange Excel Application Object Behavior | Excel Programming | |||
strange error when assigning macro to a form object! | Excel Programming | |||
FormulaR1C1 gets strange application/object defined error | Excel Programming | |||
Gridline printing probem | Excel Discussion (Misc queries) | |||
excel's probem | Excel Programming |