If...Then...Else
用 If...Then...Else 塊定義幾個語句塊,執行其中一個語句:
If condition1 Then
[statementblock-1]
[ElseIf condition2 Then
[statementblock-2]] ...
[Else
[statementblock-n]]
End If
Visual Basic 首先測試 condition1。如果它為 False,Visual Basic就測試condition2,依此類推,直到找到一個為 True 的條件。當它找到一個為 True的條件時,Visual Basic就會執行相應的語句塊,然後執行 End If 後面的代碼。作為一個選擇,可以包含 Else 語句塊,如果條件都不是 True,則 VisualBasic 執行 Else 語句塊。
If...Then...ElseIf 只是 If...Then...Else 的一個特例。注意,可以使用任意數量的 ElseIf 子句,或者一個也不用。可以有一個 Else 子句,而不管有沒有 ElseIf 子句。
例如,應用程序可以根據菜單控件數組中哪個控件被單擊而采取相應的動作:
Private Sub mnuCut_Click (Index As Integer)
If Index = 0 Then '“剪切”命令。
CopyActiveControl '調用通用過程。
ClearActiveControl
ElseIf Index = 1 Then '“復制”命令。
CopyActiveControl
ElseIf Index = 2 Then '“清除”命令。
ClearActiveControl
Else '“粘貼”命令。
PasteActiveControl
End If
End Sub
注意,總是可以添加更多的 ElseIf 塊到 If...Then 結構中去。但是,當每個ElseIf 都將相同的表達式比作不同的數值時,這個結構編寫起來很乏味。在這種情況下可以使用 Select Case 判定結構。
詳細信息 請參閱《Visual Basic 6.0語言參考手冊》中的“If...Then...Else 語句”。
Select Case
Visual Basic 提供 Select Case 結構替代 If...Then...Else,從而可在多個語句塊中有選擇地執行其中一個。Select Case 語句的能力與 If...Then...Else 語句類似,但對多重選擇的情況,Select Case 語句使代碼更加易讀。
Select Case 在結構的上方處理一個測試表達式並只計算一次。然後,VisualBasic 將表達式的值與結構中的每個 Case 的值進行比較。如果相等,就執行與該 Case 相關聯的語句塊。
Select Case testexpression
[Case expressionlist1
[statementblock-1]]
[Case expressionlist2
[statementblock-2]]
.
.
.
[Case Else
[statementblock-n]]
End Select
每一個 expressionlist 是一個或幾個值的列表。如果在一個列表中有多個值,就用逗號把值隔開。每一個 statementblock 中含有零個或多個語句。
如果不止一個 Case與測試表達式相匹配,則只對第一個匹配的 Case 執行與之相關聯的語句塊。如果在表達式列表中沒有一個值與測試表達式相匹配,則 Visual Basic 執行 Case Else 子句(此項是可選的)中的語句。
例如,假定在 If...Then...Else 的例子中要向“編輯”菜單添加命令。為此可以另加一個 ElseIf 子句,或用 Select Case 來寫函數:
Private Sub mnuCut_Click (Index As Integer)
Select Case Index
Case 0 '“剪切”命令。
CopyActiveControl '調用通用過程。
ClearActiveControl
Case 1 '“復制”命令。
CopyActiveControl
Case 2 '“清除”命令。
ClearActiveControl
Case 3 '“粘貼”命令。
PasteActiveControl
Case Else
frmFind.Show '顯示找到的對話框。
End Select
End Sub
注意 Select Case 結構每次都要在開始處計算表達式的值。而 If...Then...Else結構為每個 ElseIf 語句計算不同的表達式。只有在 If 語句和每一個 ElseIf語句計算相同表達式時,才能用 Select Case 結構替換 If...Then...Else 結構。