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
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_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を返す |
論理演算子をベン図で表すと以下の通りです。
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 |
まとめ
ここまで、if文の使い方、論理演算子、比較演算子の使い方についてご紹介しました。
通常のif文は・・・
If~Else~End iF
複数条件の場合は・・・
If~ElseIf~Else~End iF
if文に論理演算子、比較演算子は、必須!
プログラムを書いていく中で、if文はかかせない関数であるため、必ず使えるようになりましょう。
if文が使えるだけで、プログラミングの幅がめちゃくちゃ広がります。
ぜひ参考にしてください。