LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #13   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,071
Default End Select without Select Case, Block If without End If errors

This is a classic case for the IIF function.

Option Explicit

Function ConwaysStepCell(neighbours, current, newLife, liveMin, liveMax)
Select Case current
Case 0
ConwaysStepCell = IIf(neighbours = newLife, 1, 0)
Case 1
ConwaysStepCell = _
IIf(neighbours < liveMin Or neighbours liveMax, 0, 1)
End Select
End Function

--
Regards,

Tushar Mehta
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions

In article , ?B?
QXRyZWlkZXM=?= <atreides1AThotmailD0Tcom says...
Hi guys,

Thanks for the tip on including the End If, but I'm still not sure about
your logic in reducing the function down. I think you are missing the fact
that neighbours could be = liveMin or liveMax or in between. Eg with liveMin
= 2, liveMax = 3

If neighbours < 2 Then
ConwaysStepCell = 0
ElseIf neighbours 3 Then
ConwaysStepCell = 0
Else
ConwaysStepCell = 1
End If

Here, if neighbours is
0, ConwaysStepCell = 0
1, ConwaysStepCell = 0
2, ConwaysStepCell = 1
3, ConwaysStepCell = 1
4, ConwaysStepCell = 0

With your example:

Select Case True
Case neighbours < 2: ConwaysStepCell = 0
Case neighbours 3: ConwaysStepCell = 0
Case neighbours = 3: ConwaysStepCell = 1
End Select

Here, if neighbours is
0, ConwaysStepCell = 0
1, ConwaysStepCell = 0
2, ConwaysStepCell = NO CASE!
3, ConwaysStepCell = 1
4, ConwaysStepCell = 0

See what I mean?

But in any case, thanks for your time in explaining different ways of
writing the function. They will help me learn different ways of inputting
functions in the future.

Atreides




"Bob Phillips" wrote:

Nick has showed you that you don't need as many tests as you have if you
re-structure them, but it doesn't tell you why yours is wrong.

Essentially, every IF must be terminated by an End If. So

If neighbours < liveMin Then
ConwaysStepCell = 0
If neighbours liveMax Then
ConwaysStepCell = 0
Else
ConwaysStepCell = 1
End If

should be

If neighbours < liveMin Then
ConwaysStepCell = 0
End If
If neighbours liveMax Then
ConwaysStepCell = 0
Else
ConwaysStepCell = 1
End If

Or you can add the second test to the overall If

If neighbours < liveMin Then
ConwaysStepCell = 0
ElseIf neighbours liveMax Then
ConwaysStepCell = 0
Else
ConwaysStepCell = 1
End If

Or you can nest another Select ... Case

Select Case True
Case neighbours < liveMin: ConwaysStepCell = 0
Case neighbours liveMax: ConwaysStepCell = 0
Case neighbours = liveMax: ConwaysStepCell = 1
End Select

This last shows you more clearly that two conditions take the same action,
so you can simplify the test by reversing it

Select Case True
Case neighbours = liveMax: ConwaysStepCell = 1

Case Else: ConwaysStepCell = 0
End Select

which is equivalent to Nick's

If neighbours = liveMin Then
ConwaysStepCell = 1
Else
ConwaysStepCell = 0
End If

or even

ConwaysStepCell = IIf(neighbours = liveMin ,1,0)
--

HTH

Bob Phillips

(replace xxxx in the email address with gmail if mailing direct)

"Atreides" <atreides1AThotmailD0Tcom wrote in message
...
I am trying to implement the function below (good computer scientists will
know why =)). However I keep getting the following errors:

"End Select without Select Case"

If I try moving the tabs around, I sometimes get the following error:

"Block If without End If"

However, these error messages don't seem to make sense as everything is
closed. How can I fix this?

Thanks
Atreides


=========
Function ConwaysStepCell(neighbours, current, newLife, liveMin, liveMax)
Select Case current
Case 0
If neighbours = newLife Then
ConwaysStepCell = 1
Else
ConwaysStepCell = 0
End If
Case 1
If neighbours < liveMin Then
ConwaysStepCell = 0
If neighbours liveMax Then
ConwaysStepCell = 0
Else
ConwaysStepCell = 1
End If
End Select
End Function





 
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
Why Error Message "End Select without Select Case"? GoFigure[_13_] Excel Programming 5 December 9th 05 12:26 AM
Select Case help Ramthebuffs[_14_] Excel Programming 4 October 13th 05 12:41 AM
how select block w/unknown last col and last row? Nikos Yannacopoulos[_5_] Excel Programming 0 November 19th 03 10:33 AM


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

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

About Us

"It's about Microsoft Excel"