今回はVBA初心者講座の第8弾
【If~End If文を使った条件分岐とコードの書き方】についてのお話です。
If(イフ)文は、前回のFor文と同じ必須機能の一つです。
IF関数と同じような処理をVBAで使うことが出来ます。
なお、Excelで使うIF関数のような関数はワークシート関数と呼び、今回のようにVBA上でコードを書いて使うIFとは別のものになります。
使い方は、慣れてしまえばとても簡単なのでぜひ使いこなせるようになりましょう。
それでは、早速本編へ行ってみましょう!!!
If文の基本的な書き方
まずは、If文の基本的な書き方を見てみましょう
今回のコードはこんな感じです
Sub 登山ランキング()
If Cells(2, 2) = "霧ヶ峰(きりがみね)" Then
Cells(2, 3) = "長野県"
End If
End Sub
このコードは、山の名前によって山がある都道府県名を振り分ける処理をしています。
※表の配色は分かりやすくする為に前もって設定しています。コードでは設定していません
コードの動きを簡単に説明すると、B2のセルが「霧ヶ峰(きりがみね)」だったら、C2のセルに「長野県」と入力してねという意味です。
If文は、IF関数とほぼ同じ意味で「もし〇〇だったら、△ △ という処理をしてね」ということをしてくれます。
では、もう少し説明を簡単にしてみましょう
If文の基本は、「If Then ~ End If(イフ・ゼン~エンド・イフ)」の間に処理内容を書きます
If 条件式 Thenで条件の内容を書き、条件に当てはまったら「何をするか」をThenのあとに書くのが基本です
条件に当てはまらない場合は、何も処理しません
今回の場合は、「Cells(2, 2).Value = “霧ヶ峰(きりがみね)”」が条件式で「Cells(2, 3).Value = “長野県”」が処理する内容ですね。
条件式と処理する内容の「””」は、これは文字ですよ。というマークなので忘れずに設定しましょう
次は、この式がどんな動きをしているのか? ということを図解を使ってもう少し詳しく解説しましょう。
If文の基本の動きを分解しよう
今回のIf文の動きを分解するとこんな感じです。
こんな風にB2セルが「霧ヶ峰(きりがみね)」だったら、C2セルに「長野県」という文字を入れてねという意味になります。
ここまでが基本ですが、条件分岐についてもう一度考えてみましょう。
条件分岐とは、条件が〇〇だったら□□をしてねということですよね。
では、〇〇じゃなかったら何をするのでしょうか?
ここまでの処理をフローチャートにするとこんな感じです。
つまり、何も処理をしないで終わるという流れになります
では、霧ヶ峰(きりがみね)ではない場合は、空白を入力するようにしましょう。
その流れのコードを書くとこんな感じです。
Sub 登山ランキング()
If Cells(2, 2) = "霧ヶ峰(きりがみね)" Then
Cells(2, 3) = "長野県"
Else
Cells(2, 3) = ""
End If
End Sub
このコードを実行してみますが、その前にB2セルとB3セルの内容を入れ替えておきましょう。
この状態になったら、コードを実行してみましょう
こんな風にC2のセルが空白になれば成功です。
今回のポイントは「Else(エルス)」です。
Elseは「そうでなかったら〇〇する」という意味があり、6行目のC2のセルに空白を入力します。
空白は、「””」だけ記入することで空白という意味になります。
空白を入力することで、セルには何も入力されないことと同じ意味になります。
B2セルは「美ヶ原(うつくしがはら)」なので「C2」のセルは空白が入力され、何も入力されていない状態になりました。
これがIf文の基本的な使い方です
複数の条件を設定する
次に複数の条件を設定する方法について見てみましょう。
複数の条件を設定するというのは「B2セルが霧ヶ峰(きりがみね)以外」だった場合の動きを色々と設定出来るということです。
コードはこんな感じです
Sub 登山ランキング()
If Cells(2, 2) = "霧ヶ峰(きりがみね)" Then
Cells(2, 3) = "長野県"
ElseIf Cells(2, 2) = "美ヶ原(うつくしがはら)" Then
Cells(2, 3) = "長野県"
ElseIf Cells(2, 2) = "筑波山(つくばさん)" Then
Cells(2, 3) = "茨城県"
ElseIf Cells(2, 2) = "大台ケ原山(おおだいがはらやま)" Then
Cells(2, 3) = "奈良県"
ElseIf Cells(2, 2) = "八幡平(はちまんたい)" Then
Cells(2, 3) = "岩手県"
Else
Cells(2, 3) = ""
End If
End Sub
今回追加したのは5~12行目です。
すごく長いですが、内容は1行目と同じでB2セルの山の名前が、霧ヶ峰なのか? 美ヶ原なのか? 筑波山なのか?
といった感じで条件に合うかどうか調べています。
条件を増やす時は、「Else+If」にして「もし〇〇であれば」を繰り返す処理になっています。
最初の条件は「If」2回目以降は「ElseIF」で始めるというのがルールです
そのどれにも当てはまらない場合は「Else」で空白にする
こんな感じで順番に調べていきます
図解するとこんな感じですね。
①最初の条件のB2セルが「霧ヶ峰(きりがみね)」では無かったので次の条件に進みます
②次の条件のB2セルが「美ヶ原(うつくしがらは)」では無かったので次の条件に進みます
③次の条件のB2セルが「筑波山(つくばさん)」だったので、C2セルに「茨城県」と入力して処理を終了します。
こんな風にIf文は複数の条件を順番に調べていき、条件に合えば目的の処理をしてくれます。
ただ、今回の様に多くの条件ががあるとコードが長くなってしまうデメリットもあります。
また、このままだと次の行を判断するためには、このコード内容を追加・変更をしてもっと長いコードになってしまいます。
こういったデメリットもありますが、コードの長さは工夫で対策出来ます。
まずは、If文の基礎をしっかりと理解して使えるようになるとVBAがもっと楽しくなりますよ。
コメントの書き方を覚えよう
そろそろ、長いコードを書くことも出てきます。
そんな時に便利なのが「コメント」です。
コメントとは「メモ」のことだと思って下さい
コード中にコメントをそのまま書こうとすると、エラーになってコードの実行が出来なくなってしまいます。
コメントの書き方は、めっちゃ簡単です文章の前に「'(アポストロフィー)」を書くだけです。
ちなみにアポストロフィーは、「Shift+7のキー」で入力出来ますが必ず半角で入力して下さい。
実際にコメントを書くとこんな感じです。
Sub 登山ランキング()
'B2セルの内容によって都道府県名をC2セルに入力する
If Cells(2, 2) = "霧ヶ峰(きりがみね)" Then
Cells(2, 3) = "長野県"
ElseIf Cells(2, 2) = "美ヶ原(うつくしがはら)" Then
Cells(2, 3) = "長野県"
ElseIf Cells(2, 2) = "筑波山(つくばさん)" Then
Cells(2, 3) = "茨城県"
ElseIf Cells(2, 2) = "大台ケ原山(おおだいがはらやま)" Then
Cells(2, 3) = "奈良県"
ElseIf Cells(2, 2) = "八幡平(はちまんたい)" Then
Cells(2, 3) = "岩手県"
Else
Cells(2, 3) = ""
End If
End Sub
こんな風にこれはコメントだよと教えてあげることで、エラーにならずにポイントになるメモ書きをコードの中に書き残しておくことが出来ます
簡単ですがコメントを書き残せるのは、結構重要なので覚えちゃいましょう
まとめ
If文の使い方はきちんとお伝えできたでしょうか?
If文での条件分岐は実務でもかなり使う便利な機能です。
ポイントは、コードは上から順番に処理していくことです
If分も上から順に条件が合っているかどうか調べて、合っていたら処理が終了してしまうことを覚えておきましょう
私も時々勘違いをして、どうして思い通りの結果にならないんだろう? と思ったら途中で条件をクリアしてしまっていたなんてこともあります。
上手くいかない思ったら、条件の順番を見直してみるとトラブルが解決することもありますよ。
最初は戸惑うと思いますが、ゆっくりでいいので何度も使って使い方に慣れておきましょう。
最後まで読んでいただきありがとうございました。
それでは、次回またお会いしましょう。
またな!!!!
コメントを残す