View Single Post
  #14   Report Post  
Posted to microsoft.public.excel.programming
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 27,285
Default Problem With Select Case

But Steve originally said:

What do you see if you execute MsgBox "'" & Left(WkSht.Name, 3) & "'" in

the
Case Else?

"May"

Steve

-------------------
Seems like you tried to eliminate case considerations early in the game.

Regards,
Tom Ogilvy


"Bob Kilmer" wrote in message
...
Ah! So you lied to us at the very beginning when you said "I have three
worksheets named May-03, Jun-03 and Jul-03...". <bg Yes. You must always
look out for case when comparing strings. Use If LCase("sTriNg) =
"string"... or If UCase(strVar1) = UCase(srtVar2)...., etc.

--
Bob Kilmer

"Steve" wrote in message
hlink.net...
<<Maybe something ...... has bad karma or something. :-}

I never discount this as a possible cause because I have experienced it

more
than once!

But not this time. FOUND THE PROBLEM!!

Select Case Left(WkSht.Name, 3)
Case "May"

My worksheets are named MAY-03, JUN-03, JUL-03, etc. So Left(WkSht.Name,

3) and
Left(ActiveSheet.Name, 3) were returning MAY, JUN, JUL, etc. For the

first
worksheet, Case "May" was case-sensitive. Case "May" was false while

Case
"MAY"
was true. Same for the other worksheets. I changed all the Case

statements
in
the macro to all caps and everything now works fine.

Thanks for staying with me on this. I appreciate your help.

Steve

"Bob Kilmer" wrote in message
...
If Left(WkSht.Name, 3) = "May" Then
MsgBox "Hello"
End If

and the message "Hello" does not come up.

You really need to determine what Left(WkSht.Name, 3) is returning.

(Not
that you should have to go to this much trouble.)

Dim s As String, i As Integer
s = Left("May-03", 3)
For i = 1 To Len(s)
Debug.Print Mid(s, i, 1), Asc(Mid(s, i, 1)),
Select Case Mid(s, i, 1)
Case "M": Debug.Print "M matches"
Case "a": Debug.Print "a matches"
Case "y": Debug.Print "y matches"
Case Else
End Select
Next i
End Sub

Have you tried the code in a squeaky clean new workbook? Maybe

something
is
corrupt or has bad karma or something. :-}

--
Bob Kilmer


"Steve" wrote in message
hlink.net...
Bob,

I also tried the following:

If Left(WkSht.Name, 3) = "May" Then
MsgBox "Hello"
End If

and the message "Hello" does not come up.

For a moment I thought it might be a References problem but
Left("Mayville",3)
worked.

Steve


"Bob Kilmer" wrote in message
...
MsgBox "'" & Left(WkSht.Name, 3) & "'" includes a single quote

string at
either end of the Left function, so I would have expected 'May'.

The
single
quotes just bracket the ends of the string, that's all. It's

something I
sometimes do to verify the extents of the string.

I can't imagine why the Select Case is not working for you. What

do
you
get
if you substitute a string for Left()?

Select Case "May"
<<Case Statements
End Select

--
Bob Kilmer

"Steve" wrote in message
hlink.net...
What do you see if you execute MsgBox "'" & Left(WkSht.Name,

3)
&
"'" in
the
Case Else?

"May"

Steve

"Bob Kilmer" wrote in message
...
Dunno, Steve. Worked okay for me. How does Wksht come to

reference a
worksheet? (I don't see a Set statement.)

What do you see if you execute MsgBox "'" & Left(WkSht.Name,

3)
&
"'" in
the
Case Else?

--
Bob Kilmer

"Steve" wrote in message

thlink.net...
I have three worksheets named May-03, Jun-03 and Jul-03 in a
workbook.
I
have
the following code in a macro:

Dim Wksht As Worksheet
Wksht.Activate
MsgBox Left(WkSht.Name, 3)
Select Case Left(WkSht.Name, 3)
Case "May"
RowRef = "467"
Case "Jun"
RowRef = "468"
Case "Jul"
RowRef = "469"
Case Else
MsgBox ..................
End Select

No matter which worksheet I run this on, I get the correct

name of
the
worksheet
in MsgBox Left(WkSht.Name, 3) but then the Select Case

always
go
to
the
Case
Else statement. If the Macro gets it right in the Magbox

function,
why
doesn't
it get the Case statement?

Steve