この記事を読むのに必要な時間は約 6 分です。

 

条件分岐と言えばIF文です。

 

シート内で使う関数にもIFってありますよね。
IF(条件式, Trueの場合, Flaseの場合) のように、当てはまる場合とそうでない場合の2パターン絶対必要でした。

 

VBAのIF文は、当てはまる場合だけとか、条件式を数パターン書いたりと、いろいろな書き方が出来ます。

 

大きく分けて3つの書き方を紹介します。
その場面に合わせて、都合の良いやり方を選んでくださいね。

スポンサーリンク

IF文の書き方

IF文の書き方にもいろいろあります。

  • If ~ Then End If、1行で書く
  • Else を使う
  • Else Ifを使う

 

条件が1つの場合、2つの場合、3つ以上の場合に分けることが出来ます。

条件が1つの場合

条件が1つだと、当てはまれば処理されて、当てはまらなければスルーされます。

If ~ Then End if で書く

構文としてはこんな感じです。

If 条件式 Then
 処理内容
End If

 

条件式がTrueになる場合、処理内容のところが実行されます。

 

数字ならTrueを返す、IsNumericを使ってIf文を書いてみました。

VBA_IF文の書き方3つ

ソースコードはこちら。

 

”10”は全角の数字なので、IsNumericは数字扱いしてくれてTrueとなりました。

 

If文の中を通り、書いていたメッセージボックスが表示されました。

VBA_IF文の書き方3つ

 

今度は数字にならない文字を書いてみます。

 

数字じゃないので、IF文の中を通らずスルーされる想定です。

VBA_IF文の書き方3つ

 

やはりステップ実行でスルーされました。

VBA_IF文の書き方3つ

If文を1行で書く

当てはまる場合の処理が1ステップだけなら、1行で書くことも出来ます。

VBA_IF文の書き方3つ

 

 

数字なので条件に当てはまり、メッセージボックスが表示されました。

 

If ~ Then Exit Sub のような書き方もよくあります。

複数条件がある場合

複数条件がある場合、Elseを使います。

Elseを使う

当てはまる、当てはまらないの2パターンならElseです。

 

先ほどは当てはまらない場合、スルーされてしまいました。
でも今回は違うってところを見せてやりましょう!

VBA_IF文の書き方3つ

 

IsNumericはFalseになって、Else側に行く想定です。

VBA_IF文の書き方3つ

 

想定通り、Elseに行きました。

VBA_IF文の書き方3つ

 

Else側のメッセージボックスも表示されました。
スルーされなくて良かったです。

VBA_IF文の書き方3つ

 

ElseIfを使う

3パターン以上分岐するならElseIfです。

 

日本語で書くとこんな感じ、

If 条件式 Then
 処理内容
ElseIf 条件式 Then
 処理内容
End If

ElseIfでたくさん直列に繋げて書くことも出来ます。

 

最後だけ条件式無しで、Elseだけもありです。

 

日付の場合Trueを返すIsDateも使って、3パターンの分岐を用意しました。

VBA_IF文の書き方3つ

 

 

実際に動かしてみます。

 

日付と判断され、最初の分岐に入りました。

VBA_IF文の書き方3つ

 

次は、日付だとは判断されず、2番目の分岐に入りました。

VBA_IF文の書き方3つ

 

もちろん、日付でも数字でも無ければ最後のElseに入ります。

VBA_IF文の書き方3つ

 

スポンサーリンク

まとめ:IF文の書き方3つ、If ~ Then、 ElseIf

VBAでのIF文の書き方を紹介しました。

 

条件が1つの場合もあれば、ElseやElseIfで複数の条件分岐をさせることも出来ます。

 

個人的には、1行で書くやり方を知った時は衝撃的でした。
「あれ、End Ifはどこに行った??」と思って探しました(笑)

 

上手くコーディングするために、どんな条件で分岐させるかは悩みどころでもあり、面白いところだと思います。

 

IF文はよく使うので、ぜひ慣れていってくださいね。

 

最後までお読みいただき、ありがとうございました。