VBScript の条件制御

Microsoft® Visual Basic® Scripting Edition (以下 VBScript) では、処理の決定や繰り返しの実行を制御するには、条件やループ (繰り返し処理) のステートメントを使用します。

If...Then...Else ステートメントを使用する

If...Then...Else ステートメントは、条件の結果が真 (True) または偽 (False) のどちらになるかを評価し、その結果に応じて実行するステートメントを指定するときに使用します。通常、条件式には値や変数を比較するための比較演算子が使用されます。比較演算子については、「比較演算子」を参照してください。また、If...Then...Else ステートメントは、必要なレベルまで任意にネストできます。

条件が真の場合のステートメントの実行

条件が真 (True) のとき、1 つのステートメントだけを実行する場合は、次のコード例のように Else キーワードを省略して 1 行の構文にまとめた If...Then...Else ステートメントを使用します。

Sub FixDate()
    Dim myDate
    myDate = #2/13/95#
    If myDate < Now Then myDate = Now
End Sub

複数行のステートメントを実行する場合は、複数行の構文を使用する必要があります。この構文には、次のコード例のように End If ステートメントが含まれます。

Sub AlertUser(value)
   If value = 0 Then
      AlertLabel.ForeColor = vbRed
      AlertLabel.Font.Bold = True
      AlertLabel.Font.Italic = True
   End If
End Sub

条件結果に応じたステートメントの実行

条件の結果に応じて実行する 2 つのブロックのステートメントを記述する場合は、If...Then...Else ステートメントを使用します。次のコード例のように、条件が真 (True) のときには、あるブロックを実行し、偽 (False) のときには、別のブロックを実行します。

Sub AlertUser(value)
   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

複数のステートメントのいずれかの実行

複数のステートメントのいずれかを実行する場合は、If...Then...Else ステートメントに ElseIf 句を記述します。次のコード例のように ElseIf 句を使用すると、さまざまな可能性を考慮してプログラムの実行経路を制御できます。次にコード例を示します。

Sub ReportValue(value)
   If value = 0 Then
      MsgBox value
   ElseIf value = 1 Then
      MsgBox value
   ElseIf value = 2 then
      Msgbox value
   Else
      Msgbox "値が有効範囲を超えています。"
   End If

ElseIf 句は、必要に応じていくつでも記述できます。ただし、複数の ElseIf 句を記述した If...Then...Else ステートメントでは、コードが読みにくくなることがあります。複数のステートメントのいずれかを実行する場合は、Select Case ステートメントを使用することをお勧めします。

Select Case ステートメントを使用する

複数のステートメント ブロックのいずれかを実行する場合は、If...Then...ElseIf ステートメントよりも Select Case ステートメントの構文が適しています。If...Then...Else ステートメントに比べ、Select Case ステートメントを使用した場合は、コードが読みやすく効率的になります。

次のコード例のように、Select Case ステートメントは一度だけ評価される単一の条件式をブロックの先頭に記述します。Select Case ステートメントでは、ブロックの先頭に記述した条件式の値と各 Case 句の値が比較され、値が一致した Case 句のステートメント ブロックが実行されます。

Select Case Document.Form1.CardType.Options(SelectedIndex).Text
   Case "MasterCard"
      DisplayMCLogo
      ValidateMCAccount
   Case "Visa"
      DisplayVisaLogo
      ValidateVisaAccount
   Case "American Express"
      DisplayAMEXCOLogo
      ValidateAMEXCOAccount
   Case Else
      DisplayUnknownImage
      PromptAgain
End Select

Select Case ステートメントの場合は、ブロックの先頭の条件式が 1 度だけ評価されることに注意してください。If...Then...ElseIf ステートメントの場合は、ElseIf ステートメントごとに異なる条件式が評価されます。If...Then...ElseIf ステートメントを Select Case ステートメントに記述し直すことができるのは、すべての ElseIf 句が同じ条件式による値を評価している場合だけです。