【VBAマクロ】If文の基本から応用まで徹底解説!【エクセル初心者向け】

スポンサードリンク
VBA
  • 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(もしも) count0 なら 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
ifの実行例

成功しました。
コードの2行目の宣言や変数については下記記事をご参考ください。

【ちょっとしたコツ】

Sub if文()

Dim count As Integer
count = 0

If count = 0 Then
Range("A1").value = "無くなりました"
End If

End Sub

上記のような書き方でも問題はないのですが、If文がどこから始まってどこで終わるのかわかりにくいですよね。
そんなときは、7行目の「Range~」の先頭にカーソルを置いて、「TAB」キーを押します。

コツ1

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

コツ2

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セルに無くなりました」、
それ以外で「count5以下」なら「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など、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

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