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 句が同じ条件式による値を評価している場合だけです。