If文?
難しそうで分からない…
VBAにおいて、If文ができるようになればマクロの機能が大きく拡がります。
そして、ポイントを学べば初心者の方でも簡単にIf文が書けるようになります!
今回はif文のポイントと応用を解説していきます。
If文が出来ればVBAは怖くありません。
If文とは
If文は条件分岐とも呼ばれており、「もし○○したら、△△をする」のように条件を付けて道を分岐させてあげるコードになります。
例えば、
「もし雨が降っていたら、傘を差して行く。そうでなければ、日焼け対策をして行く」
のような例ですね。ですが、VBAではあまり使わない例ですよね。
僕がVBAでIf文を使うときは
「もしセルが空白で無ければ○○をして、そうで無ければ(空白であれば)△△をする」
という使い方をよくします。
If文の書き方
「If~Then」の書き方
If文の基本的なコードになります。
この場合は、条件に当てはまった時のみ使うコードです。
例として、数字が偶数だったときの処理を紹介します。
基本的な書き方では条件に当てはまった時の処理ですが、場合によっては条件から外れた時の処理も行う必要があります。
「If~Then Else~」の書き方
この場合は、条件に当たった時・外れた時に使うコードです。
数字が偶数ではなかったときの処理を紹介します。
If文でよく使う具体例(セルに値が入力されているか確認する)
用途によってIf文の使い方は多岐に渡ります。
その中でも、僕がVBAでよく使うIf文の使い方を1つ紹介したいと思います。
セルにデータが入力されているか確かめる方法です。具体的には
「もしセルが空白で無ければ○○をして、そうで無ければ(空白であれば)△△をする」
という記述の仕方をします。
少しややこしい言い回しですが、「セルに値があるとき」という書き方は出来ないので、「セルが空白では無い時」という条件にします。
複数分岐は「ElseIf」を使う
If文でたくさん分岐を作りたい時はElseIfを使います。
今までのIf文は「条件に一致した時」「条件から外れた時」の2通りでした。
しかし、それ以上に条件分岐したいときはどうしたらいいでしょうか。
「ElseIf」(読み方:エルス イフ)の出番です。
「ElseIf」書き方
複数の条件を設定したいときに使うコードです。
点数を評価するマクロを作って、ElseIfを紹介します。
マクロは点数の欄に数字を入れて、マクロ実行を押すと評価の欄に成績評価が表示されます。
以上のようにElseIfは複数分岐ができますが、多すぎると見にくくなってしまいます。
そんな時は「SelectCase」文を使うこともできます。
応用編:「For~Next」の組み合わせで効率UP
「If~Then」文は条件分岐処理でしたが、「For~Next」文は繰り返し処理になります。
このIf文とFor文を組み合わせて使うことで、マクロで出来ることは一気に拡がります。
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
今までは1つのセルしか処理できませんでしたが、「For~Next」文を使うことでボタン1つで複数のセルを瞬時に処理することが可能になります。
コメント