VBScript(Visual Basic Scripting Edition)は、Microsoftが開発した軽量のスクリプト言語で、主にWindows環境で使用されます。
if文は、プログラムの流れを制御するための基本的な構文で、条件に基づいて異なるコードを実行することができます。
本記事では、VBScriptのif文について詳しく解説し、基本的な使い方から応用的なテクニックまでを学んでいきます。
また、最後には理解度を確認するための演習問題と解答例を用意していますので、ぜひ挑戦してみてください。
if文の基本構文
if は「もし」という英単語で、指定された条件が真(True)である場合にのみ特定のコードを実行します。
以下が基本的な構文です。
If 条件 Then
' 条件がTrueの場合に実行されるコード
End If
この構文では、 条件 が真であれば、 If 文の次に続くコードが実行されます。
条件が偽(False)であれば、コードはスキップされます。
例: シンプルなif文
Dim num
num = 10
If num > 5 Then
MsgBox "numは5より大きいです。"
End If
上記の例では、 num という変数が5より大きいため、 MsgBox によって「numは5より大きいです。」というメッセージが表示されます。
Else文を使用した条件分岐
elseは「それ以外」という英単語で、if 文に続けて else 文を追加することで、条件が偽の場合に実行されるコードを指定することができます。
以下がその構文です。
If 条件 Then
' 条件がTrueの場合に実行されるコード
Else
' 条件がFalseの場合に実行されるコード
End If
例: if…else文
Dim age
age = 18
If age >= 20 Then
MsgBox "あなたは成人です。"
Else
MsgBox "あなたは未成年です。"
End If
この例では、 age が20未満であるため、 MsgBox によって「あなたは未成年です。」というメッセージが表示されます。
ElseIf文を使用した複数の条件分岐
複数の条件をチェックする場合は、 elseif を使用して連続的に条件を評価することができます。
この場合、最初に真と評価された条件のコードが実行され、他の条件は無視されます。
If 条件1 Then
' 条件1がTrueの場合に実行されるコード
ElseIf 条件2 Then
' 条件2がTrueの場合に実行されるコード
Else
' すべての条件がFalseの場合に実行されるコード
End If
例えば、変数xが特定の範囲にあるかどうかを確認し、範囲に応じて異なるメッセージを表示するコードは以下のようになります。
Dim x
x = 15
If x > 20 Then
MsgBox "xは20より大きいです。"
ElseIf x > 10 Then
MsgBox "xは10より大きく、20以下です。"
ElseIf x > 5 Then
MsgBox "xは5より大きく、10以下です。"
Else
MsgBox "xは5以下です。"
End If
この場合、xが10より大きく、20以下であるため、”xは10より大きく、20以下です。”というメッセージが表示されます。
ネストされたif文
ネスト(入れ子)とは、処理の中に同等の処理がある状態のことを指します。
例えば、これまで解説してきたif文ですが、if文の中にif文を記述することでより複雑な条件をチェックすることができます。
If 条件1 Then
If 条件2 Then
' 条件1および条件2がTrueの場合に実行されるコード
End If
End If
入れ子は、とても便利でプログラミングではよく使用されますが、複雑な入れ子は可読性が悪くなるため、使いすぎには注意しましょう。
入れ子の代わりに、論理演算子を使用することで条件を繋げることができます。
複数条件の評価
複数の条件を同時に評価する場合、 And や Or 演算子を使用することができます。
例: And演算子
Dim temperature
temperature = 25
If temperature > 15 And temperature < 30 Then
MsgBox "温度は適切です。"
End If
この例では、温度が15度より高く、かつ30度より低い場合に「温度は適切です。」というメッセージが表示されます。
例: Or演算子
Dim day
day = "土曜日"
If day = "土曜日" Or day = "日曜日" Then
MsgBox "今日は休日です。"
End If
この例では、 day が「土曜日」または「日曜日」のいずれかであれば、「今日は休日です。」というメッセージが表示されます。
「And」以外にも多く存在します。下記の一覧を参考にしてください。
左式 | 右式 | And | Or | Xor | Eqv | Imp |
---|---|---|---|---|---|---|
T | T | T | T | F | T | T |
T | F | F | T | T | F | F |
F | T | F | T | T | F | T |
F | F | F | F | F | T | T |
if文を1行で記述する方法を知る
if文を書いているとコードが長くなってシンプルなコードにしたいなと思うことがあると思います。
if文を1行で記述する方法があります。
方法は、2つです。「これまで解説してきたif文の構文を1行で書く」か「関数を使う」かです。
例: if文の構文を1行で書く
'変数の宣言と初期化
Dim x
x = 0
'if文を1行で書いた例
if x <= 0 Then x = x + 1 else
'結果 → 1
msgbox x
例: 関数を使用する
'変数の宣言と初期化
Dim x
x = 0
'if文を1行で書いた例
x = IIf(x <= 0, x + 1, x)
'結果 → 1
msgbox x
'あらかじめ関数を定義しておく
Function IIf(terms, truePart, falsePart)
IIf = falsePart
If terms Then IIf = truePart
End Function
Select Case文との比較
条件分岐が多い場合は、Select Case文を使う方が読みやすくなることがあります。
Select Case文は特定の変数の値に基づいて処理を分岐させます。
Dim num
num = 2
Select Case num
Case 1
MsgBox "numは1です"
Case 2
MsgBox "numは2です"
Case 3
MsgBox "numは3です"
Case Else
MsgBox "numは1、2、3のいずれでもありません"
End Select
演習問題
次に、学んだ内容を確認するための演習問題をいくつか紹介します。
演習1
変数aが100以上であれば「aは100以上です。」と表示し、50以上100未満であれば「aは50以上100未満です。」と表示し、それ以外の場合は「aは50未満です。」と表示するVBScriptコードを書いてください。
演習1 解答例
Dim a
a = 75
If a >= 100 Then
MsgBox "aは100以上です。"
ElseIf a >= 50 Then
MsgBox "aは50以上100未満です。"
Else
MsgBox "aは50未満です。"
End If
演習2
変数bが偶数であれば「bは偶数です。」と表示し、奇数であれば「bは奇数です。」と表示するVBScriptコードを書いてください。
演習2 解答例
Dim b
b = 9
If b Mod 2 = 0 Then
MsgBox "bは偶数です。"
Else
MsgBox "bは奇数です。"
End If
演習3
変数xとyがともに負の数であれば「xとyは負の数です。」と表示し、少なくとも一方が正の数であれば「xまたはyは正の数です。」と表示するVBScriptコードを書いてください。
演習3 解答例
Dim x, y
x = -3
y = 5
If x < 0 And y < 0 Then
MsgBox "xとyは負の数です。"
Else
MsgBox "xまたはyは正の数です。"
End If
まとめ
VBScriptのif文を使いこなすことで、条件に応じた柔軟な処理を実現することができます。
基本的なif文から複雑なネストされたif文、比較演算子や論理演算子の使用方法までを理解し、さまざまな条件分岐を効果的に組み合わせてプログラムを書きましょう。