VBA - 使用判斷式
使用 If…Then…Else 陳述式
您可以使用 If…Then…Else 陳述式執行特定陳述式或區塊陳述式 (視條件的值而定)。 If…Then…Else 陳述式可以使用無限多層巢狀層級。 不過為了方便閱讀理解方便,您可能需要使用 Select Case 陳述式,而非多層巢狀的 If…Then…Else 陳述式。
若條件為 True 即執行陳述式
如果要當條件為 True 時只執行一個陳述式,請使單行語法的 If…Then…Else 陳述式。 下列範例展示單行語法,省略 Else 關鍵字。
Sub FixDate() 
 myDate = #2/13/95# 
 If myDate < Now Then myDate = Now 
End Sub
若要執行一行以上的程式碼,您必須使用多行語法。 此語法包含 End If 陳述式,如下列範例所示。
Sub AlertUser(value as Long) 
 If value = 0 Then 
 AlertLabel.ForeColor = "Red" 
 AlertLabel.Font.Bold = True 
 AlertLabel.Font.Italic = True 
 End If 
End Sub
若條件為 True 就執行某些陳述式,而若為 False 則執行其他陳述式
使用 If…Then…Else 陳述式定義兩個可執行陳述式的區塊:當條件為 True 執行一個區塊,而當條件為 False 時則執行另個區塊。
Sub AlertUser(value as Long) 
 If value = 0 Then 
 AlertLabel.ForeColor = vbRed 
 AlertLabel.Font.Bold = True 
 AlertLabel.Font.Italic = True 
 Else 
 AlertLabel.Forecolor = vbBlack 
 AlertLabel.Font.Bold = False 
 AlertLabel.Font.Italic = False 
 End If 
End Sub
若第一個條件為 False,則測試第二個條件
您可以將 ElseIf 陳述式新增至 If…Then…Else 陳述式來測試當第一個條件為 False 時所使用的第二個條件。 例如,下列函數程序是根據職別計算獎金。 若所有的 If 和 ElseIf 陳述式皆為 False,則執行Else 陳述式後面的陳述式。
Function Bonus(performance, salary) 
 If performance = 1 Then 
 Bonus = salary * 0.1 
 ElseIf performance = 2 Then 
 Bonus = salary * 0.09 
 ElseIf performance = 3 Then 
 Bonus = salary * 0.07 
 Else 
 Bonus = 0 
 End If 
End Function
使用 Select Case 陳述式
如果你使用多層巢狀的 If…Then…Else 陳述式,為了方便閱讀理解,你可以改用 Select Case 陳述式。
在下列範例中, Select Case 陳述式會評估傳遞至程序的引數。 請注意,每個Case陳述式可以包含多個值、 一個範圍的值或值和比較運算子的組合。 如果Select Case陳述式不符合任何Case陳述式中的值,就會執行選用的Case Else陳述式。
Function Bonus(performance, salary) 
  Select Case performance 
    Case 1 
      Bonus = salary * 0.1 
    Case 2, 3 
      Bonus = salary * 0.09 
    Case 4 To 6 
      Bonus = salary * 0.07 
    Case Is > 8 
      Bonus = 100 
    Case Else 
      Bonus = 0 
  End Select 
End Function