If...Then...Else 陳述式
語法
IfconditionThen [ statements ] [ Elseelsestatements ]
或者,您可以使用區塊形式語法︰
IfconditionThen
[ statements ]
[ ElseIfcondition-nThen
[ elseifstatements ]]
[ Else
[ elsestatements ]]
End If
If...Then...Else 陳述式的語法具有以下幾個部分。
部分 | 描述 |
---|---|
condition | 必要。 下列兩種類型的運算式之中的一或多個︰ 數值運算式或字串運算式,會評估為 True 或 False。 如果 condition 是 Null,condition 會被視為 False。 TypeOfobjectnameIsobjecttype 格式的表達式。 Objectname 是任何物件參考,而 objecttype 是任何有效的物件類型。 如果 objectname 是 objecttype 所指定的物件類型,則表達式為 True;否則為 False。 |
statements | 在區塊形式中為選用;在沒有 Else 子句的單行形式中則為必要。 一或多個陳述式,以冒號隔開;陳述式執行的條件是如果 condition 為 True。 |
condition-n | 選用。 與 condition 相同。 |
elseifstatements | 選用。 一或多個陳述式,執行的條件是如果 condition-n 為 True。 |
elsestatements | 選用。 一或多個陳述式,執行的條件是如果先前的 condition 或 condition-n 運算式都不是 True。 |
註解
使用單行表單體 (簡短簡單測試的第一個語法) 。 不過,區塊形式 (第二個語法) 比單行形式提供更多的結構性和彈性,且通常較易讀取、維護和偵錯。
注意事項
使用單行形式,有可能因為 If...Then 決策而執行多個陳述式。 所有陳述式必須在同一行,並以冒號分開,如下列陳述式所示︰
If A > 10 Then A = A + 1 : B = B + A : C = C + B
區塊形式的 If 陳述式必須是該行的第一個陳述式。 在陳述式的 Else、ElseIf 和 End If 部分之前,只能有行號或行標籤。 區塊 If 的結尾必須是 End If 陳述式。
若要判斷陳述式是否為區塊 If,請檢查關鍵字 Then 後面的內容。 如果同一行中在 Then 後面出現註解以外的任何項目,陳述式會被視為單行 If 陳述式。
Else 和 ElseIf 子句兩者都為選用。 在區塊 If 陳述式中可以有任意數目的 ElseIf 子句,都不可以出現在 Else 子句之後。 區塊 If 陳述式可以為巢狀;也就是相互包含在另一者之中。
當執行區塊 If (第二個語法) 時,會測試 condition。 如果 condition 為 True,則會執行 Then 之後的陳述式。 如果 condition 為 False,則會依序評估每個 ElseIf 條件 (如果有的話)。 發現條件為 True 時,會執行緊接在相關 Then 之後的陳述式。 如果沒有 ElseIf 條件為 True,或是如果沒有 ElseIf 子句,就會執行接在 Else 之後的陳述式。 執行接在 Then 或 Else 之後的陳述式後,程式碼會繼續執行接在 End If 之後的陳述式。
提示
在評估具有多個可能值的單一運算式時,Select Case 也許更能發揮作用。 不過, TypeOfobjectnameIsobjecttype 子句不能與 Select Case 語句搭配使用。
注意事項
TypeOf 不能與硬式資料類型如 Long、Integer 等一起使用,除了 Object 以外。
範例
本範例顯示 [區塊] 與 [單行] 形式的 If...Then...Else 陳述式。 它也說明如何使用 If TypeOf...Then...Else。
Dim Number, Digits, MyString
Number = 53 ' Initialize variable.
If Number < 10 Then
Digits = 1
ElseIf Number < 100 Then
' Condition evaluates to True so the next statement is executed.
Digits = 2
Else
Digits = 3
End If
' Assign a value using the single-line form of syntax.
If Digits = 1 Then MyString = "One" Else MyString = "More than one"
使用 If TypeOf 建構,以判斷控制項所傳入的程序是否為文字方塊。
Sub ControlProcessor(MyControl As Control)
If TypeOf MyControl Is CommandButton Then
Debug.Print "You passed in a " & TypeName(MyControl)
ElseIf TypeOf MyControl Is CheckBox Then
Debug.Print "You passed in a " & TypeName(MyControl)
ElseIf TypeOf MyControl Is TextBox Then
Debug.Print "You passed in a " & TypeName(MyControl)
End If
End Sub
另請參閱
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。