View Single Post
  #15   Report Post  
Posted to microsoft.public.excel.programming
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 27,285
Default Which one is faster?

I believe you are correct, but the point is still that Select Case does
allow calculation in the conditions which was my point (even if my example
was incorrect).

Select Case True
Case long complex expression that evaluates to true or false

case another long complex expression that evaluates to true or false


Regards,
Tom Ogilvy

"Dana DeLouis" wrote in message
...
but the limitation could be easily overcome with
res = Sin(x) + Log(x / 2) + Sqr(25.6) + Tan(3.2)


Yes. That's true. Select Case is just another way to do it. One

advantage
to Case is that it does not require a variable, and the result of the
calculation is internal.

I may be wrong, but are you sure about

Case Is = 5 And Sin(x) + Log(x / 2) + Sqr(25.6) + Tan(3.2) <= 10


"Is = 5 " gets the left hand side from the internal results. There is
nothing further calculated. This part returns True, and the remaining
longer calculation is not performed. I could have sworn this generated an
error long ago, but it doesn't in Excel XP.

Looked at another way. Here we use "Or" instead of "And." Here, we do

not
get the correct msgbox because Is <3 is False, and the remaining part

(75)
is not used (It's a calculation).
Hope I said this correctly. :)

Sub TestCase()
Dim x
x = 7
Select Case x * 1
Case Is < 3 Or 7 * 1 5 ' Or use x 5
MsgBox "Between 5 and 10"
Case Else
MsgBox "This is not correct"
End Select
End Sub

--
Dana DeLouis
Using Windows XP & Office XP
= = = = = = = = = = = = = = = = =


"Tom Ogilvy" wrote in message
...
but the limitation could be easily overcome with

res = Sin(x) + Log(x / 2) + Sqr(25.6) + Tan(3.2)
if res < 5 then

Elseif res < 10 then


And select case does allow more complex and further calculations in the

case
expression.

Sub TestCase()
x = 7
Select Case Sin(x) + Log(x / 2) + Sqr(25.6) + Tan(3.2)
Case Is = 5 And Sin(x) + Log(x / 2) + Sqr(25.6) + Tan(3.2) <= 10
MsgBox "Between 5 and 10"
Case Else
MsgBox "Less than 5 or greater than 10"
End Select

End Sub

--
Regards,
Tom Ogilvy

"Dana DeLouis" wrote in message
...
I think it depends on what you are doing. I think the main advantage

of

Select Case is that a calculation is only performed once. If you

have
a
If
Else, then the same calculation has to be performed more than once.
Here is an example of using the same "complex" formula using an If

Else

If Sin(x) + Log(x / 2) + Sqr(25.6) + Tan(3.2) < 5 Then
'do somthing
ElseIf Sin(x) + Log(x / 2) + Sqr(25.6) + Tan(3.2) < 10 Then
' something else
ElseIf Sin(x) + Log(x / 2) + Sqr(25.6) + Tan(3.2) < 20 Then
' etc
End If


On the other hand, by using Select Case, the complex calculation is

only
perfomed once.

Select Case Sin(x) + Log(x / 2) + Sqr(25.6) + Tan(3.2)
Case Is < 5: 'something
Case Is < 10 'etc
Case Is < 20 'etc
End Select

End Sub


This is why the syntax is pretty strict on Select Case. It does not

want
to
introduce further calculations. For example, you can not do the

following
Case is =5 and <=10. (or something similar). It would require

further
calculations. The proper syntax would be 5 to 10. This allows the

function
to work without having to do any more math.

--
Dana DeLouis
Using Windows XP & Office XP
= = = = = = = = = = = = = = = = =


"Syed Zeeshan Haider" wrote in
message ...
Hello Everybody,
I have Excel 97 Pro on Win98SE.

For a certain situation, I have two options:

1. If Else
2. Select Case

I just want to ask which one of these is faster?

Thank you,
--
Syed Zeeshan Haider.
http://szh.20m.com/


-----------------------------------
Allah says to Mankind:
"Then which of the favours of your Lord will ye deny?"