【If文ができれば怖くない】VBA「If~Then」を図解で解説

「if文ができれば怖くない」VBA「f~Then」を図解で解説

If文?

難しそうで分からない…

VBAにおいて、If文ができるようになればマクロの機能が大きく拡がります。

そして、ポイントを学べば初心者の方でも簡単にIf文が書けるようになります!

今回はif文のポイントと応用を解説していきます。

If文が出来ればVBAは怖くありません。

こんな方におすすめ

・If文の書き方を知りたい

・If文の具体的な使い方を知りたい

・If文の応用が知りたい

結論

・「If~Then」記述の方法

If (条件1)Then 

     (条件1に当てはまった時の処理) 

ElseIf (条件2) Then

     (条件2に当てはまった時の処理) 

Else

     (条件から外れた時の処理) 

End If 

・使用頻度が高いのは「セルに値があるか確認」するIf文

ElseIfを使うと複数の条件を設定する事ができる

for~Next文と一緒に使うことで、さらに応用が利く

If文とは

If文は条件分岐とも呼ばれており、「もし○○したら、△△をする」のように条件を付けて道を分岐させてあげるコードになります。

例えば、

「もし雨が降っていたら、傘を差して行く。そうでなければ、日焼け対策をして行く」

VBAにおいてIf文のイメージを解説した図解

のような例ですね。ですが、VBAではあまり使わない例ですよね。

僕がVBAでIf文を使うときは

「もしセルが空白で無ければ○○をして、そうで無ければ(空白であれば)△△をする」

 という使い方をよくします。

If文の書き方

「If~Then」の書き方

If文の基本的なコードになります。

この場合は、条件に当てはまった時のみ使うコードです。

VBAにおけるIf文の基本的な書き方「If~Then」

例として、数字が偶数だったときの処理を紹介します。

VBAで数字が偶数の時に処理するコード

基本的な書き方では条件に当てはまった時の処理ですが、場合によっては条件から外れた時の処理も行う必要があります。

「If~Then Else~」の書き方

この場合は、条件に当たった時・外れた時に使うコードです。

VBAにおけるIf文の書き方「If~Then Else~」

数字が偶数ではなかったときの処理を紹介します。

数字が偶数の時は●を入れて、違う場合は×を入れるコード

If文でよく使う具体例(セルに値が入力されているか確認する)

用途によってIf文の使い方は多岐に渡ります。

その中でも、僕がVBAでよく使うIf文の使い方を1つ紹介したいと思います。

セルにデータが入力されているか確かめる方法です。具体的には

「もしセルが空白で無ければ○○をして、そうで無ければ(空白であれば)△△をする」

という記述の仕方をします。

少しややこしい言い回しですが、「セルに値があるとき」という書き方は出来ないので、「セルが空白では無い時」という条件にします。

複数分岐は「ElseIf」を使う

If文でたくさん分岐を作りたい時はElseIfを使います。

今までのIf文は「条件に一致した時」「条件から外れた時」の2通りでした。

しかし、それ以上に条件分岐したいときはどうしたらいいでしょうか。

ElseIf」(読み方:エルス イフ)の出番です。

ElseIf文を分かりやすくイメージした図解(雨の日を例とした場合)

「ElseIf」書き方

複数の条件を設定したいときに使うコードです。

ElseIfの書き方について解説した画像

点数を評価するマクロを作って、ElseIfを紹介します。

マクロは点数の欄に数字を入れて、マクロ実行を押すと評価の欄に成績評価が表示されます。

点数を評価するマクロを作りElseIfについて解説した画像

以上のようにElseIfは複数分岐ができますが、多すぎると見にくくなってしまいます。

そんな時は「SelectCase」文を使うこともできます。

応用編:「For~Next」の組み合わせで効率UP

「If~Then」文は条件分岐処理でしたが、「For~Next」文は繰り返し処理になります。

このIf文とFor文を組み合わせて使うことで、マクロで出来ることは一気に拡がります。

If文とFor文の組み合わせ
For (カウント変数) = (開始値) to (終了値)

If (条件1) Then

     (条件1に一致した時の処理)

ElseIf (条件2)Then

     (条件2に一致した時の処理)

Else

     (条件から外れた時の処理)

End If

Next (カウント変数)
複数の点数を評価するマクロの画像
Sub grades()

Dim score

For x = 2 to 10

If score = 100 Then

     Cells(x,2).Value = "満点"

ElseIf score >= 40 And score < 100 Then

     Cells(x,2).Value = "合格点"

Else

     Cells(x,2).Value = "赤点"

End If

Next x

End Sub
コード解説
IfステートメントとForステートメントを使って点数を評価するコードの解説

今までは1つのセルしか処理できませんでしたが、「For~Next」文を使うことでボタン1つで複数のセルを瞬時に処理することが可能になります。

「If~Then」のポイント

・「If~Then」文のコード記述の仕方

If (条件1)Then 

     (条件1に当てはまった時の処理) 

ElseIf (条件2) Then

     (条件2に当てはまった時の処理) 

Else

     (条件から外れた時の処理) 

End If 

・使用頻度が高いのは「セルに値があるか確認」するIf文

ElseIfを使うと複数の条件を設定する事ができる

for~Next文と一緒に使うことで、さらに応用が利く



コメント

タイトルとURLをコピーしました