HOW TO:依據一個或多個條件執行陳述式 (Visual Basic)
您可以使用 If...Then...Else 陳述式 (Visual Basic),根據條件的Boolean 資料型別 (Visual Basic) 值,執行特定陳述式 (Statement) 或陳述式區塊。 條件通常來自於兩個值的比較,它也可以是任何評估為 Boolean 值 (True 或 False) 的運算式。 其中包含其他資料型別的值,例如已轉換為 Boolean 的數字型別 (Numeric Type)。
若要在條件為 True 時執行一或多個陳述式
如果只有一行陳述式要執行,請使用 If...Then...Else 建構的單行語法。 不需要使用 Else 或 End If 陳述式。 下列範例將說明這點。
Sub fixDate() Dim myDate As Date = #2/13/1973# If myDate < Now Then myDate = Now End Sub
-或-
在條件為 True 時若要執行多於一行的程式碼,請使用多行語法,其中包含 End If 陳述式。 如果條件為 False 時並沒有要執行程式碼,請省略 Else 陳述式。 下列範例將說明這點。
Dim alertLabel As New System.Windows.Forms.Label Sub alertUser(ByVal value As Long) If value = 0 Then alertLabel.ForeColor = System.Drawing.Color.Red alertLabel.Font = New Font(alertLabel.Font, FontStyle.Bold Or FontStyle.Italic) End If End Sub
若要在條件為 True 時執行某些陳述式,並在條件為 False 時執行其他陳述式
請使用 If...Then...Else 建構搭配 Else 陳述式 (Visual Basic) 陳述式,定義兩個陳述式區塊。 Visual Basic 在條件為 True 時會執行一段區塊,而當條件為 False 時則會執行另一段區塊。 下列範例將說明這點。
Dim alertLabel As New System.Windows.Forms.Label Sub alertUser(ByVal value As Long) If value = 0 Then alertLabel.ForeColor = System.Drawing.Color.Red alertLabel.Font = New Font(alertLabel.Font, FontStyle.Bold Or FontStyle.Italic) Else alertLabel.Forecolor = System.Drawing.Color.Black alertLabel.Font = New Font(alertLabel.Font, FontStyle.Regular) End If End Sub
若要在第一個條件為 False 時測試其他條件
請使用 If...Then...Else 建構搭配一或多個 ElseIf 陳述式,以在第一個條件為 False 時測試其他條件。 在下列範例中,Function 程序會根據績效等級來計算薪資紅利。 只有當 If 和 ElseIf 陳述式的條件皆為 False 時,跟隨在 Else 陳述式後的陳述式區塊才會執行。
Function bonus(ByVal performance As Integer, ByVal salary As Decimal) As Decimal If performance = 1 Then Return salary * 0.1 ElseIf performance = 2 Then Return salary * 0.09 ElseIf performance = 3 Then Return salary * 0.07 Else Return 0 End If End Function
Visual Basic 會依據條件在 If...Then...Else 陳述式中出現的順序,以進行條件測試。 當遇到 True 條件或 Else 陳述式時,便會執行相對應的陳述式區塊。 然後會將控制權傳遞給 End If 陳述式之後的陳述式。
您可以擁有數個 ElseIf 陳述式,或是一個都沒有。 您可以加入或省略 Else 陳述式,不論是否有 ElseIf 陳述式。
請參閱
工作
HOW TO:將控制權轉移出控制結構 (Visual Basic)
HOW TO:測試運算式的多個值 (Visual Basic)
HOW TO:發生錯誤時保留控制權 (Visual Basic)