VBScriptのif文をマスターする: 基本から応用まで

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

入れ子は、とても便利でプログラミングではよく使用されますが、複雑な入れ子は可読性が悪くなるため、使いすぎには注意しましょう。

入れ子の代わりに、論理演算子を使用することで条件を繋げることができます。

複数条件の評価

複数の条件を同時に評価する場合、 AndOr 演算子を使用することができます。

例: 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アイエムピー
TTTTFTT
TFFTTFF
FTFTTFT
FFFFFTT
※ T:True F:False

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文、比較演算子や論理演算子の使用方法までを理解し、さまざまな条件分岐を効果的に組み合わせてプログラムを書きましょう。