#1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 783
Default Select Case

Sub abtest4()
x = 4
Select Case x
Case Is = 2 Or 4
MsgBox x
End Select
End Sub

I get no message box when I run the above. What am I missing?

Thanks,
Alan Beban
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,582
Default Select Case

Alan -

I always do it this way:

Sub abtest4()
Dim x
x = 4
Select Case x
Case 2, 4
MsgBox x
End Select
End Sub


- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
Peltier Technical Services, Inc. - http://PeltierTech.com
_______


"Alan Beban" wrote in message
...
Sub abtest4()
x = 4
Select Case x
Case Is = 2 Or 4
MsgBox x
End Select
End Sub

I get no message box when I run the above. What am I missing?

Thanks,
Alan Beban



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,290
Default Select Case


Sub abtest4()
Dim x As Long
x = 4
Select Case x
Case 2, 4
MsgBox x
End Select
End Sub
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware
(Excel Add-ins / Excel Programming)



"Alan Beban"
wrote in message
Sub abtest4()
x = 4
Select Case x
Case Is = 2 Or 4
MsgBox x
End Select
End Sub

I get no message box when I run the above. What am I missing?

Thanks,
Alan Beban
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 783
Default Select Case

Jon Peltier wrote:
Alan -

I always do it this way:

Sub abtest4()
Dim x
x = 4
Select Case x
Case 2, 4
MsgBox x
End Select
End Sub


Thanks.

Alan Beban
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 783
Default Select Case

Jim Cone wrote:

Sub abtest4()
Dim x As Long
x = 4
Select Case x
Case 2, 4
MsgBox x
End Select
End Sub


Thanks.

Alan Beban


  #6   Report Post  
Posted to microsoft.public.excel.programming
ML ML is offline
external usenet poster
 
Posts: 57
Default Select Case

Did that work Alan?
I noticed that msgboxs really work best when they are strings or converted
to a string strconv(etc, etc)

Mark

"Alan Beban" wrote:

Sub abtest4()
x = 4
Select Case x
Case Is = 2 Or 4
MsgBox x
End Select
End Sub

I get no message box when I run the above. What am I missing?

Thanks,
Alan Beban

  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 783
Default Select Case

ML wrote:
Did that work Alan?
I noticed that msgboxs really work best when they are strings or converted
to a string strconv(etc, etc)

Mark

"Alan Beban" wrote:


Sub abtest4()
x = 4
Select Case x
Case Is = 2 Or 4
MsgBox x
End Select
End Sub

I get no message box when I run the above. What am I missing?

Thanks,
Alan Beban


Yes, it was not a message box problem. It worked when "Case Is 2 Or 4"
was replaced with "Case 2, 4". I'm still curious why while it didn't
throw a compile error (i.e., the syntax seems OK), it still didn't work
the way I posted it.

Thanks for your interest.

Alan Beban
  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,582
Default Select Case

Alan -

I would rely on my default answer: "Sometimes Excel is like that." I say it
thoughtfully while stroking my beard.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
Peltier Technical Services, Inc. - http://PeltierTech.com
_______


"Alan Beban" wrote in message
...
ML wrote:
Did that work Alan? I noticed that msgboxs really work best when they are
strings or converted to a string strconv(etc, etc)

Mark

"Alan Beban" wrote:


Sub abtest4()
x = 4
Select Case x
Case Is = 2 Or 4
MsgBox x
End Select
End Sub

I get no message box when I run the above. What am I missing?

Thanks,
Alan Beban


Yes, it was not a message box problem. It worked when "Case Is 2 Or 4" was
replaced with "Case 2, 4". I'm still curious why while it didn't throw a
compile error (i.e., the syntax seems OK), it still didn't work the way I
posted it.

Thanks for your interest.

Alan Beban



  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 783
Default Select Case

By God, I think you've got it!

Alan

Jon Peltier wrote:
Alan -

I would rely on my default answer: "Sometimes Excel is like that." I say it
thoughtfully while stroking my beard.

- Jon
Alan Beban


Yes, it was not a message box problem. It worked when "Case Is 2 Or 4" was
replaced with "Case 2, 4". I'm still curious why while it didn't throw a
compile error (i.e., the syntax seems OK), it still didn't work the way I
posted it.

Thanks for your interest.

Alan Beban




  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 417
Default Select Case

This syntax also works in Excel 2000:

Sub abtest4()
x = 4
Select Case x
Case Is = 2, Is = 4
MsgBox x
End Select
End Sub

--
Regards,
Bill Renaud





  #11   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7,247
Default Select Case

Try something like

Select Case X
Case 1, 3
Debug.Print "Number is either 1 or 3"
Case 2, 4
Debug.Print "Number is either 2 or 4"
Case Else
Debug.Print "Other number"
End Select


--
Cordially,
Chip Pearson
Microsoft MVP - Excel, 10 Years
Pearson Software Consulting
www.cpearson.com
(email on the web site)


"Alan Beban" wrote in message
...
Sub abtest4()
x = 4
Select Case x
Case Is = 2 Or 4
MsgBox x
End Select
End Sub

I get no message box when I run the above. What am I missing?

Thanks,
Alan Beban


  #12   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 783
Default Select Case

Chip Pearson wrote:
Try something like

Select Case X
Case 1, 3
Debug.Print "Number is either 1 or 3"
Case 2, 4
Debug.Print "Number is either 2 or 4"
Case Else
Debug.Print "Other number"
End Select


Thanks. The Syntax "Case 2,4" is what works; also "Case Is = 2, Is = 4"

It's still a mystery why "Case Is = 2 Or 4" neither works nor throws a
compiler error. I guess, as Jon Peltier said, "Sometimes Excel is like
that" is all the explanation I can get :-)

Alan
  #13   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default Select Case

The expression = 2 Or 4 evaluates to 6, by Or'ing the bits

Regards,
Peter T


Thanks. The Syntax "Case 2,4" is what works; also "Case Is = 2, Is = 4"

It's still a mystery why "Case Is = 2 Or 4" neither works nor throws a
compiler error. I guess, as Jon Peltier said, "Sometimes Excel is like
that" is all the explanation I can get :-)

Alan



  #14   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 417
Default Select Case

The last paragraph at the bottom of the "Operator Precedence" topic in
Visual Basic Help states:

"The Is operator is an object reference comparison operator. It does not
compare objects or their values; it checks only to determine if two object
references refer to the same object."

So, technically, I suppose it is not really correct programming to use the
Is operator when checking a variable that is a Variant, as in this case.

As Peter T mentioned, "Case Is = 2 Or 4" DOES WORK if x = 6! Your point
about it not throwing a compiler error is interesting, though. I noticed
that you had not declared the variable x in your sample code, so you must
not have used "Option Explicit" at the top of your code, which I assume you
normally do. (I had to add a declaration when testing the version that I
tried.)

--
Regards,
Bill Renaud



  #15   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 783
Default Select Case

Bill Renaud wrote:
The last paragraph at the bottom of the "Operator Precedence" topic in
Visual Basic Help states:

"The Is operator is an object reference comparison operator. It does not
compare objects or their values; it checks only to determine if two object
references refer to the same object."

So, technically, I suppose it is not really correct programming to use the
Is operator when checking a variable that is a Variant, as in this case.


What is the correct programming instead of Case Is < 2?

. . . I noticed
that you had not declared the variable x in your sample code, so you must
not have used "Option Explicit" at the top of your code, which I assume you
normally do. . . .


Horror of horrors, I normally don't! Much of what I do is testing
snippets, and I can't be bothered declaring all the i's and j's and k's
and x's and y's and arr's and rng's. The time lost on the few occasions
when it bites me is nothing compared to the time "wasted" with the
declarations. So beat me :-)

Alan Beban


  #16   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 417
Default Select Case

<<What is the correct programming instead of Case Is < 2?

I notice that if you enter "Case Is < 2


--
Regards,
Bill Renaud



  #17   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 417
Default Select Case

(Disregard my previous post; a wrong editing keystroke posted it before I
was ready!)

<<What is the correct programming instead of "Case Is < 2"?

In this case, I guess you have to use the Is operator (the VBA editor will
add it automatically for you if you leave it out). Or, if this is a simple
case, maybe an If statement would work (i.e. If x < 2 Then ... ).

<<The time lost on the few occasions when it bites me is nothing compared
to the time "wasted" with the declarations.

I guess I have to disagree with this one. I was "bitten" early on in my VBA
learning experience by typos and spelling errors, so have been declaring
all variables ever since. Declarations also give me a place to put a
comment to further explain what the variable stands for. As you can see
from the replies that I post in this newsgroup, I tend to use long variable
names (i.e. ilngNumRows, instead of just i or j) even for short demo
routines, as I just can't figure out the algorithms when single-letter
names are used. Auto List Members fills in the variable names for me fairly
quickly most of the time. I spend relatively little time in the debugger
trying to figure out errors. I do this even for short demo routines in this
newsgroup because I hope that there are a few people that want to see the
proper way to write VBA code.

I do enjoy reading your posts, however, and like learning faster ways of
programming from the people here who are much more advanced than I.
--
Regards,
Bill Renaud



  #18   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7,247
Default Select Case

"The Is operator is an object reference comparison operator.

In a Select Case statement, the clause "Case Is" is not using the "Is"
operator. Think of "Case Is" as an single operation that just happens to use
the text "Is". If you do want to use the Is operator, you can do something
like

Dim R1 As Range
Dim R2 As Range
Dim X As Integer
Set R1 = Range("A1")
Set R2 = R1
X = 123
Select Case True
Case R1 Is R2 ' or (R1 Is R2) = True
Debug.Print "IS true"
Case Else
Debug.Print "Not IS true"
End Select



--
Cordially,
Chip Pearson
Microsoft MVP - Excel, 10 Years
Pearson Software Consulting
www.cpearson.com
(email on the web site)

"Bill Renaud" wrote in message
. ..
The last paragraph at the bottom of the "Operator Precedence" topic in
Visual Basic Help states:

"The Is operator is an object reference comparison operator. It does not
compare objects or their values; it checks only to determine if two object
references refer to the same object."

So, technically, I suppose it is not really correct programming to use the
Is operator when checking a variable that is a Variant, as in this case.

As Peter T mentioned, "Case Is = 2 Or 4" DOES WORK if x = 6! Your point
about it not throwing a compiler error is interesting, though. I noticed
that you had not declared the variable x in your sample code, so you must
not have used "Option Explicit" at the top of your code, which I assume
you
normally do. (I had to add a declaration when testing the version that I
tried.)

--
Regards,
Bill Renaud




  #19   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 417
Default Select Case

<<In a Select Case statement, the clause "Case Is" is not using the "Is"
operator. Think of "Case Is" as an single operation that just happens to
use the text "Is".

Thanks for the clarification, Chip. "Is" is used as a keyword in the Select
Case statement, as documented in the Select Case Statement in Visual Basic
Help.

From Visual Basic Help:

"Use the Is keyword with comparison operators (except Is and Like) to
specify a range of values. If not supplied, the Is keyword is automatically
inserted."

"Note The Is comparison operator is not the same as the Is keyword used
in the Select Case statement."

--
Regards,
Bill Renaud



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
Case without Select Case error problem Ayo Excel Discussion (Misc queries) 2 May 16th 08 03:48 PM
how to use select case Junior728 Excel Programming 5 May 15th 07 10:17 AM
End Select without Select Case, Block If without End If errors Atreides Excel Programming 12 November 17th 06 05:10 PM
Select Case achidsey Excel Programming 4 September 18th 05 05:24 PM


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

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

About Us

"It's about Microsoft Excel"