The If...ElseIf Statement

Sometimes you may need to test multiple "mutually exclusive" conditions -- a series of conditions only one of which will be true. The If...ElseIf construct tests for as many such conditions as need to be tested. Its general format is shown below.

If condition1 Then
  
   ...statements1
  
ElseIf condition2 Then
  
   ...statements2
  
ElseIf condition3 Then
  
   ...statements3
  
...
[ Else
  ...statements ]
End If

If condition1 is evaluated as True, then the set of statements1 is executed; if condition1 is evaluated as False, then condition2 is evaluated. If this expression is evaluated as True, then the set of statements2 is executed; if the expression is evaluated as False, then condition3 is evaluated, and so forth for as many tests as are coded. The final, optional, Else condition is provided in case none of the previous tests is evaluated as True. It is the "default" condition. The point of the structure is that only one of the parallel tests can be evaluated as True, and only one set of statements is executed.

The following example uses a set of If...ElseIf statements to check whether an entered character is in the first, middle, or last third of the alphabet.

Sub Check_Letter (Src As Object, Args As EventArgs)

  If     UCase(Letter.Text) Like "[ABCDEFGHI]" Then
    Message.Text = "Character is in 1st third of alphabet."
  ElseIf UCase(Letter.Text) Like "[JKLMNOPQR]" Then
    Message.Text = "Character is in 2nd third of alphabet."
  ElseIf UCase(Letter.Text) Like "[STUVWXYZ]"  Then
    Message.Text = "Character is in last third of alphabet."
  Else
    Message.Text = "Character is not alphabetic."
  End If

End Sub

<asp:TextBox id="Letter" Size="1" MaxLength="1" runat="server"/>
<asp:Button Text="Check Letter" OnClick="Check_Letter" runat="server"/>
<asp:Label id="Message" runat="server"/>

The character entered is converted to upper case for testing with the string operator Like against a set of characters represent the first, middle, and last thirds of the alphabet. A set of If...ElseIf statements is used because only one of the parallel tests will be true, and an Else condition is provided in case a non-alphabetic character is entered.

Of course, a standard If...Else construct could be used for these tests. However, their construction is more difficult to write and to visualize, and each If statement must be paired with an End If statement.

Sub Check_Letter (Src As Object, Args As EventArgs)

  If UCase(Letter.Text) Like "[ABCDEFGHI]" Then
    Message.Text = "Character is in 1st third of alphabet."
  Else
    If UCase(Letter.Text) Like "[JKLMNOPQR]" Then
      Message.Text = "Character is in 2nd third of alphabet."
    Else
      If UCase(Letter.Text) Like "[STUVWXYZ]"  Then
        Message.Text = "Character is in last third of alphabet."
      Else
        Message.Text = "Character is not alphabetic."
      End If
    End If
  End If

End Sub