July 4, 2009

VBScript Select Case Statement - Complete Syntax

The VBScript Select Case statement is a useful and more readable substitute for the VBScript If...Elseif statement. It allows you to execute one out of many blocks of code depending on the value of a variable.

While searching for example uses of this statement, I noticed that most of the examples available on the internet do not describe the complete syntax and usage of the statement. According to the MSDN VBScript reference, the syntax of the Select Case statement is:

  Select Case testexpression
    [Case expressionlist-n
      [statements-n]] . . .
    [Case Else
      [elsestatements-n]]
  End Select
  .
  .
  .
  expressionlist-n
    Required if Case appears. A comma delimited list of one or more expressions. 
  .
  .
  .

Notice that it says a comma delimited list of one or more expressions. This means you can select one block of code for more than one value. The following code demonstrates an example usage of the Select Case statement in ASP + VBScript environment.

<%
  '
  ' Assumes that a variable called "Rating" is declared and assigned an integer value
  '

  Select Case Rating

    Case 1
      Response.Write "Poor"

    Case 2, 3, 4
      Response.Write "Below Average"

    Case 5, 6
      Response.Write "Average"

    Case 7, 8, 9
      Response.Write "Good"

    Case 10
      Response.Write "Excellent"

    Case Else
      Err.Raise vbObjectError + &H0911, "Custom Error Handler", "Rating must be an integer between 1 and 10"

  End Select
%>

Select Case Statement Trick: Using "Select Case True"

Upon execution, the VBScript interpreter compares the testexpression with each case expression until a match is found. The testexpression could be specified as true and the case expressions can contain expressions that evaluate to true or false (for example: a < b And b < c; a > 0). This allows you to write complex logic relatively easily. The following VBScript example checks whether a number is even or odd using this technique.

<%
  '
  ' Assumes that a variable called "Number" is declared and assigned an integer value
  '

  Select Case True

    Case Number Mod 2 = 0
      Response.Write Number & " is an Even Number"

    Case Number Mod 2 = 1
      Response.Write Number & " is an Odd Number"

  End Select
%>

Notes

This statement is quite similar to the C language's switch case statement. However, there is NO break statement or its equivalent End Case, Exit Case or Exit Select available in VBScript.