- VBAマクロを習い始めたんだけど、If文って何?
- If文の書き方や使い方が知りたい
このようなお悩みをお持ちですか?
この記事を読むことで、下記のことがわかります。
- If文の概要がわかる
- VBAマクロのIf文の書き方や使い方を学べる
- VBAマクロでIf文を書く際のコツを知れる
VBAマクロ歴3年の私が、できるだけわかりやすく解説いたします。
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
If文とは?
まず、「If文」とは何なのでしょうか。
If文は条件分岐をさせたい時に使います。
もう少し具体的に説明します。
「If」を直訳すると、「もし・・・」や「もしも・・・」となります。
- もしも、雨が降っていたら、傘を持っていく
- もしも、明日が休日なら、遊園地に行く
- もしも、卵が少ないなら、スーパーに買いに行く
このように、【もしも「●●」が「■■」なら「▲▲」する】という、
特定の条件(明日が休日)に当てはまった場合のみ分岐する(遊園地に行く)
という処理がIf文です。
ではもう少しVBAマクロに近い例を挙げてみましょう。
- もしも「count」が「0」ならA1セルに「無くなりました」と書き込みする
- もしも「money」が「1000」以下ならA1セルに「チャージしてください」と書き込みする
- もしも「name」が「utatane」以外なら「ログインできません」とダイアログを表示する
それっぽい例が出てきましたね。
では、If文はどのように使ったらいいのでしょうか?
次項で使い方や書き方を解説いたします。
VBAマクロのIf文の使い方・書き方
早速VBAマクロでのIf文の書き方を見ていきましょう。
If 条件式 Then
条件式が当てはまる場合の処理
End If
「Then」は決まり文句のようなものなので、深く考えず使ってください。
「End If」は「If文が終了しましたよ」という意味です。
プロシージャの「End Sub」と同じです。
プロシージャについては下記記事をご参考ください。
もう少しわかりやすくするために、下記のように変換してみます。
If(もしも) ●●が■■なら Then
▲▲する
End If
もう少し具体的にしてみます。
If(もしも) count が 0 なら Then
A1セルに「無くなりました」と書き込みする
End If
では、実際の式を当てはめてみます。
If count = 0 Then
Range("A1").Value = "無くなりました"
End If
この「count = 0」は「0を変数であるcountに代入する」という意味ではなく、
【「count」が「0」と等しいなら】という意味になります。
紛らわしいですが、先頭に「If」がつくと意味が変わると思ってください。
【Ifの条件式】
- = : 等しい(If count = 0 Then)
- <> : 異なる(If count <> 0 Then)
- > : 超える(If count > 0 Then)
- < : 未満(If count < 0 Then)
- >= : 以上(If count >= 0 Then)
- <= : 以下(If count <= 0 Then)
では、マクロにして実行してみましょう。
Sub if文()
Dim count As Integer
count = 0
If count = 0 Then
Range("A1").value = "無くなりました"
End If
End Sub

成功しました。
コードの2行目の宣言や変数については下記記事をご参考ください。
【ちょっとしたコツ】
Sub if文()
Dim count As Integer
count = 0
If count = 0 Then
Range("A1").value = "無くなりました"
End If
End Sub
上記のような書き方でも問題はないのですが、If文がどこから始まってどこで終わるのかわかりにくいですよね。
そんなときは、7行目の「Range~」の先頭にカーソルを置いて、「TAB」キーを押します。

そうすることで、下記のように字下げが行われ、Ifの始まりや終わり、処理内容がわかりやすくなります。

If文の書き方を解説いたしました。
しかしながら、このコードではcountが0以外の時の処理ができません。
条件式が当てはまらない時も処理をさせたい場合は「Else」を使います。
If~Else
If count = 0 Then
Range("A1").value = "無くなりました"
Else
Range("A1").Value = "ストックあり"
End If
上記コードは、
「countが0」なら「A1セルに無くなりました」と書き込み、
「countが0以外」なら「A1セルにストックあり」と書き込む例です。
わかりやすくするために下記のように変換してみます。
If(もしも) ●●が■■なら Then
▲▲する
Else
条件式が当てはまらないなら◆◆する
End If
Elseを使うことで、条件式が当てはまらない場合の処理をさせることができます。
では、もう1つ条件式を追加してみましょう。
If~ElseIf~Else
If count = 0 Then
Range("A1").value = "無くなりました"
ElseIf count <= 5 Then
Range("A1").Value = "少なめ"
Else
Range("A1").Value = "ストックあり"
End If
上記コードは、
「countが0」なら「A1セルに無くなりました」、
それ以外で「countが5以下」なら「A1セルに少なめ」、
上記以外なら「A1セルにストックあり」と書き込む例です。
わかりやすくするために下記のように変換してみます。
If(もしも) ●●が■■なら Then
▲▲する
ElseIf ●●が♪♪なら Then
▼▼する
Else
条件式が当てはまらないなら◆◆する
End If
ElseIfを使うことによって、複数の条件式を設定できます。
しかしながら、上記コードでは「countが0未満」のときでも、「少なめ」と書き込みされてしまいます。
もう1つElseIfを追加してもいいのですが、よりわかりやすくさせるために「And」を使ってみましょう。
And・Or・Not
If count <= 5 And count > 0 Then
Range("A1").value = "少なめ"
ElseIf count > 5 Then
Range("A1").Value = "ストックあり"
Else
Range("A1").Value = "無くなりました"
End If
上記コードは、
「countが5以下 かつ(and)0を超える(1~5)」なら「A1セルに少なめ」、
それ以外で「5を超える(6以上)」なら「A1セルにストックあり」、
上記以外(0以下)なら「A1セルに無くなりました」と書き込む例です。
これで0未満の場合も対応でき、コードを見るだけでわかりやすくなりました。
「And」は論理演算子と言って「複数の条件式を全て満たす場合」という意味になります。
【論理演算子】
- And:複数の条件式を全て満たす場合
- Or:複数の条件式のいずれかを満たす場合
- Not:条件式を満たさない場合
論理演算子を使うことで、If文の使い道がさらに広がります。
今回例に挙げたような簡単なものからぜひ試してみてください。
最後に
VBAマクロのIf文について解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!