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 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