HOW TO:依據一或多個條件執行陳述式
更新:2007 年 11 月
您可以使用 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 (Visual Basic) 陳述式,以在第一個條件為 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 陳述式。