Excel VBA If文 複数条件の分岐処理は”Or”を使う!

if文は、Excel VBAだけでなく、ほぼ全ての言語で使用する機会があるため、if文を使えることは必須項目です。

if文を使うことで、条件ごとに処理を変更することができます。

プログラミング言語の構文は、for文とif文で成り立っているため、この記事を実践することでExcel VBAを使いこなせるようになったと言っても過言ではありません!

それほどif文は重要ですので、この機会にマスターしちゃいましょう^^

今回は、if文の基礎から、複数条件での分岐処理、入れ子(if文の中にif文を入れる)の使い方まで網羅的に解説しています。

あなたはこの記事の内容を実践することで、if文を使えるようになります!

記事の内容
  • if文の使い方を知る
  • 条件ごとに処理を変更する
  • 複数条件で分岐処理をする
  • if文の入れ子(ネスト)の使い方を知る
  • 論理演算子、比較演算子の使い方を知る

if文の使い方

基本的な使い方

if文は、条件ごとに処理を変更したいときに使用します。

基本的な使い方は以下の通りです。

コード

If 条件式 Then
    処理1
Else
    処理2
End If

条件式が一致(True)した場合、処理1を実行し、一致しなかった場合、処理2を実行します。

Elseを省略すると・・・
 条件式が一致しなかった場合(False)、何も実行されず次のプログラムへ進みます。


参考
If…Then…Else ステートメントMicrosoft

複数条件での分岐処理

基本的な使い方

if~EndifだとTrueかFalseかの2択になってしまいます。

2択ではなく、もっと条件を増やして複数で分岐処理したいよということが多いと思います。

そんなときは、ElseIfを使います。

基本的な使い方は以下の通りです。

コード

If 条件式1 Then
    処理1
ElseIf 条件式2 Then
    処理2
Else
    処理3
End If

手順1
If 条件式1 Then
条件式1が一致するか確認する
手順2
条件式1がTrue
処理1を実行し、if文を抜ける
手順3
条件式1がFalse
条件式2が一致するか確認する
手順4
条件式2がTrue
勝利2を実行し、if文を抜ける
手順5
条件式2がFalse
Elseの処理3を実行する

ElseIfは、If~Elseの間にいくつでも追加できるので、条件分岐したい数だけ記述すれば大丈夫です。

簡単なコード

実際に簡単なコードを見ていきましょう。

以下のようなExcelがあった場合に、条件ごとに評価を入力してみましょう。

コード

Sub test()

   Dim i As Long    '行数カウンタ用の変数

    For i = 2 To 6    '行数のカウンタ(2行目~6行目まで実行)
    
        If Cells(i, 2).Value > 80 Then        'B列の値が80以上ならTrue
            Cells(i, 3).Value = "Excellent"   '条件式がTrueの場合に実行
        ElseIf Cells(i, 2).Value > 60 Then    'B列の値が60以上ならTrue
            Cells(i, 3).Value = "Good"        '条件式がTrueの場合に実行
        Else
            Cells(i, 3).Value = "Bad"         'すべての条件式がFalseの場合に実行
        End If
      
    Next

End Sub

For~Nextの使い方は、以下をご参照ください。
xeory_basexeory_base

実行結果は以下の通りです。

if~ElseIf~Else~End Ifを使うことで、簡単に複数条件での分岐処理をすることが可能になります。

Cells、Rangeの使い方は、以下をご参照ください。
Excel VBA 値の入力と取得はRange、Cellsプロパティを使うだけ!

if文の入れ子(ネスト)の使い方

if文の入れ子を使うことで、より複雑な分岐処理を実行することができます。

今回は、まず取得した値が”正”なのか”負”なのかを判断して、次の条件処理に進むようなプログラムを見ていきます。

コード

Sub test()

    Dim num As Integer
    
    num = 4
    
    If num > 0 Then
        If num Mod 2 = 0 Then
            MsgBox num & "は偶数です。"
        Else
            MsgBox num & "は奇数です"
        End If
    Else
        MsgBox num & "は負の数です"
    End If

End Sub

メッセージボックス(MsgBox)の使い方は、以下をご参照ください。
Excel VBA MsgBoxの使い方(基礎〜応用まで徹底解説)

論理演算子、比較演算子の使い方

if文の条件式で必ず論理演算子、比較演算子が出てきます。

論理演算子、比較演算子は比較的簡単ですので、この機会にマスターしちゃいましょう。

論理演算子

論理演算子を使うことで、複数の条件が一致または、どちらか一方が一致した場合に処理をすることが可能になります。

論理演算子には以下の通りです。

演算子 記述例 説明
And A And B AとBの両方がTrueの場合にTrueを返す
Or A Or B AまたはBのどちらか一方がTrueの場合にTrueを返す
Not Not A AがTrueの場合はFalse、Falseの場合はTrueを返す


参考
And 演算子Microsoft

論理演算子をベン図で表すと以下の通りです。

A And B

A Or B

Not A

実際にコードを見ていきましょう。

if文の入れ子(ネスト)で紹介したコードを論理演算子を使った方法で記述していきましょう。

コード

Sub test()

    Dim num As Integer
    
    num = 3
    
    If num > 0 And num Mod 2 = 0 Then
        MsgBox num & "は偶数です。"
    ElseIf num > 0 And num Mod 2 = 1 Then
        MsgBox num & "は奇数です。"
    Else
        MsgBox num & "は負の数です"
    End If

End Sub

比較演算子

2つの値の比較をしたいときに比較演算子を使います。

比較演算子には以下の通りです。

演算子 用途 使用例 結果
= 等しい 10 = 2 False
<> 等しくない 10<>2 True
> 大きい 10 > 2 True
>= 以上 10 >= 2 True
< 小さい 10 < 2 False
<= 以下 10 <= 2 False


参考
比較演算子Microsoft

まとめ

ここまで、if文の使い方、論理演算子、比較演算子の使い方についてご紹介しました。

通常のif文は・・・
 If~Else~End iF

複数条件の場合は・・・
 If~ElseIf~Else~End iF

if文に論理演算子、比較演算子は、必須!

プログラムを書いていく中で、if文はかかせない関数であるため、必ず使えるようになりましょう。

if文が使えるだけで、プログラミングの幅がめちゃくちゃ広がります。

ぜひ参考にしてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です