条件分岐(if)

広告

ここからはVBAでプログラムの流れを制御するための各構文を見ていきます。まずは条件によって処理を分ける条件分岐です。

条件によって処理を分けると言うのは、例えば計算結果としてこうだったらこの処理をしたいけど、違ったら別の処理をしたいなどその時の条件の結果によって処理を分けたい場合に使います。条件分岐には「if」を使います。

基本的な構文は下記の通りです。

If 条件式 Then
    (条件式がTrueの時に行う処理1)
    (条件式がTrueの時に行う処理2)
End If

「if」文は「If」で始まり「End If」で終わります。そして「If」の後に処理を行うかどうかを判別する条件式を記述し、その条件を満たす場合に行いたい処理を「If」の行と「End If」の間に記述します。処理は複数の行を記述できますので条件を満たす場合に行いたい処理を複数記述することができます。

まず例で見てみましょう。変数xの値が10より大きい場合にセルに「大きい」と表示したい場合には次のように記述します。

Dim x As Integer

x = 12

If x > 10 Then
    Range("A1").Value = "大きい"
End If

ここで条件式の記述方法について確認しておきます。条件式には比較演算子を使って数値の大きさを比較したり、文字列が他の文字列と同じかどうかなどを判断します。比較演算子は結果として「True」または「False」を返しますので、条件式に記述した式が結果として「True」を返すような場合が条件を満たす場合ということになり、その後の処理を実行します。

先ほどの例の場合であれば「x < 10」という部分が条件式になります。変数「x」には「12」と言う数値が格納されていますので条件式は「True」を返します。その為、この条件分岐は実行され「Range("A1").Value = "大きい"」という処理が実行されるわけです。変数「x」に格納されている値が例えば「8」とかの数値であれば、条件分岐は「False」になるため処理は実行されません。

※比較演算子については「演算子」を参照して下さい。

サンプルプログラム

では簡単なサンプルで試してみましょう。

testif1.bas

Sub テスト()
    Dim x As Integer
    
    x = 12
    
    If x > 10 Then
        Range("A1").Value = "変数は10より大きい"
    End If

End Sub

上記のマクロを実行すると次のようになります。

条件分岐

今回は条件式の結果が「True」ですので処理が実行されてセルに文字が表示されます。

( Written by Tatsuo Ikura )