VBScriptでif文をマスターする

VBScript

どのプログラミング言語でも基礎として使用される「if文」ですが、プログラミング初心者がはじめに学習するべきステートメントの1つです。

VBScriptでも「if文」は存在します。

当記事では、if文の使い方について初心者の方にもわかるようご紹介します。

if文とは

ifイフは「もし」という英単語で、条件に応じて処理を分岐したいときに使用されます。

if文をマスターすることで、プログラムの流れをコントロールし、より柔軟な処理を実現することができます。

例えば、「もし手元に飲み物が1つも無かったら、飲み物を1つ買う」という処理があったとします。

一部をプログラムに置き換えると下記のように記述します。

if 飲み物が1つもない? Then
 '正しい場合、飲み物を1つ買う
end if

上記の例文のように「if」+「半角スペース」+「条件」+「半角スペース」+「Then」を記述し、「end if」で囲むと、if文が使用できます。

直訳すると、もし(if)飲み物が1つも無い(条件)場合(Then)飲み物を1つ買う(真の場合の処理)になります。

ifは、条件が真(True)の場合に特定の処理を実行します。

すべてプログラムに置き換えると下記のように記述します。

'変数の宣言と初期化
Dim drink
drink = 0

'飲み物が1つも無い?
if drink <= 0 Then
 drink = drink + 1	'飲み物を1つ買う
end if

'結果 → 1
msgbox drink

「if drink <= 0 Then」の「<=」は、「~以下」を示す比較演算子です。

変数「drink」が0以下なら、処理をするという意味です。数学の「≦」と同じ意味合いです。

もし、変数「drink」が1以上であれば、「drink = drink + 1」の処理を行わずに「end if」へ移ります。

比較演算子とは

比較演算子は、2つの式を比較する際に用いられます。

「<=」以外にも多く存在します。下記の一覧を見てください。

演算子(読み方)説明補足
=(イコール)等しい左式に値を代入する時にも使用される
<(しょうなり)(左式は右式)より小さい不等号
>(だいなり)(左式は右式)より大きい不等号
<=(左式は右式)以下
>=(左式は右式)以上
<>等しくない
Is(イズ)等しい参照オブジェクトを比較する時に使用する

実際に使用すると、下記のように記述します。

'等しい
if 1 = 1 Then
 '正なのでこの中を通る
end if

'小なり
if 1 < 2 Then
 '正なのでこの中を通る
end if

'大なり
if 2 > 1 Then
 '正なのでこの中を通る
end if

'以下
if 1 <= 2 Then
 '正なのでこの中を通る
end if

'以上
if 2 >= 1 Then
 '正なのでこの中を通る
end if

'等しくない
if 1 <> 2 Then
 '正なのでこの中を通る
end if

'クラスの定義
Class Sample1
    Public Caption'プロパティの定義
End Class

'オブジェクト変数の宣言。
Dim obj1
'オブジェクトの作成。
Set obj1 = New Sample1

'Is
if obj1 Is obj1 Then
 '正なのでこの中を通る
end if

基本的に不等号は、数値間での比較に使用します。文字の比較でも使用できますが、使用する文字や設定によって大小が異なり、複雑なため文字の比較はオススメしません。

if…else文とは

elseエルスは「それ以外」という英単語で、「if」と一緒に使用し、ifの条件に一致しない(偽、False)場合に処理されます。

下記の記述例のように使用します。

if 3 < 2 Then
 'True
else
 'False
end if

ifでチェックした条件は、2通りの結果の値を返します。

条件が正しい場合は、「Trueトュルー」、誤りの場合は「Falseフォルス」です。

3は2より大きいため、「False」となり、else内の処理を通ります。

if内やelse内の処理がないことを明示的に示したい場合は、if内やelse内の記述を省略した下記のような書き方もできます。

'if内の処理を省略
if 3 < 2 Then
else
 '処理をここに記述
end if

'else内の処理を省略
if 1 < 2 Then
 '処理をここに記述
else
end if

if…elseif…else文複数条件について

1つの条件だけではなく複数の条件を評価したい場合は、「elseifエルスイフ」を使用します。

elseifを使うと、複数の条件の中から最初に真となる条件の処理を実行します。

下記の記述例を見てください。

if 3 < 2 Then
 'Falseのため、この中を通らない
elseif 1 < 2 Then
 'Trueのため、この中を通る
else
end if

elseif文は、if文とelse文の間に記述します。また、if文と同様の構文です。

if文とelse文とは違い、elseif文は、下記のように複数記述することができます。

if 3 < 2 Then
 'Falseのため、この中を通らない
elseif 4 < 2 Then
 'Falseのため、この中を通らない
elseif 1 < 2 Then
 'Trueのため、この中を通る
else
end if

比較演算子を用いた条件結果について

これまで「3 < 2」といった比較演算子を用いた条件を説明し、条件が正しい場合は、「True」、誤りの場合は「False」になるといいました。

この「True」「False」の値は、取得することができます。

下記の記述例を見てください。

'変数の宣言
Dim flg

'結果を取得
flg = 1 <> 2

'結果 → True
msgbox flg

行「flg = 1 <> 2」で1と2が不一致のため、変数「flg」に「True」が代入されています。

条件を「1 <> 1」にした場合は、「False」が取得できます。

「True」と「False」といったデータ型を「Booleanブーリアン」と呼びます。

他のプログラミング言語では、「Boolブール」と呼ぶことがあります。

ネストされたif文

ネスト(入れ子)とは、処理の中に同等の処理がある状態のことを指します。

例えば、これまで解説してきたif文ですが、if文の中にif文を記述することでより複雑な条件をチェックすることができます。

'変数の宣言と初期化
Dim drink
drink = 5

'1以上?
if drink >= 1 Then
	'10未満?
	if drink < 10 Then
		'True
	else
	end if
else
end if

入れ子は、とても便利でプログラミングではよく使用されますが、複雑な入れ子は可読性が悪くなるため、最高でも2回の入れ子(if文が合計3つ)までで抑えましょう。

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

論理演算子とは

論理演算子は、Boolean型の式を比較し、Boolean型の結果を返すことができます。

例えば、入れ子で説明した2つの条件を論理演算子を用いたif文に置き換えると下記のように記述できます。

'変数の宣言と初期化
Dim drink
drink = 5

'1以上?かつ10未満?
if drink >= 1 And drink < 10 Then
	'True
else
end if

論理演算子「And」は、左式がTrueで右式がTrueの場合に、結果のTrueを返します。

「And」以外にも多く存在します。下記の一覧を見てください。

左式右式AndアンドOrオアXorエックスオアEqvイーキューブイImpアイエムピー
TTTTFTT
TFFTTFF
FTFTTFT
FFFFFTT
※ T:True F:False

どのプログラミング言語でも主に「And」と「Or」がよく使用されるのではじめのうちは、この2つを覚えておくことをお勧めします。

if文を1行で記述する方法を知る

if文を書いているとコードが長くなってシンプルなコードにしたいなと思うことがあると思います。

if文を1行で記述する方法があります。

方法は、2つです。「これまで解説してきたif文の構文を1行で書く」か「関数を使う」かです。

if文の構文を1行で書いた例

'変数の宣言と初期化
Dim drink
drink = 0

'if文を1行で書いた例
if drink <= 0 Then drink = drink + 1 else

'結果 → 1
msgbox drink

関数を使った例

'変数の宣言と初期化
Dim drink
drink = 0

'if文を1行で書いた例
drink = IIf(drink <= 0, drink + 1, drink)

'結果 → 1
msgbox drink

'あらかじめ関数を定義しておく
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

まとめ

VBScriptのif文を使いこなすことで、条件に応じた柔軟な処理を実現することができます。

基本的なif文から複雑なネストされたif文、比較演算子や論理演算子の使用方法までを理解し、さまざまな条件分岐を効果的に組み合わせてプログラムを書きましょう。