今回から条件分岐について書いていこうと思います。
そもそも「条件分岐」とは?って思いますよね。以下のように4回に分けて説明していきます。
では説明にはいります。
突然ですがVBAを書いていくと以下のような事ありませんか?
・〇〇の時だけ△△の処理をさせたい。
・〇〇以外の時だけ◇◇の処理をさせたい。
上記のような人の意思が入ったような事をさせたい時に使うのが「条件分岐」です。加えて「条件分岐」はマクロの記録では再現出来ません。自力でコードが書けないと出来ない処理ですが覚えてしまえば他者との差別化も可能です。是非覚えてください。
条件分岐の方法はいくつかあります。
・If~Then
・If~Then (ElseIfを用いた処理)
・If~Then(Ifのネスト)
・Select~Case
主な処理としてはこのぐらいでしょうか。
「If~Then」っていうのはコードを略して書いていましてあだ名みたいなものです。
「If~Then 使ってコード書けば出来そうだよね。」なんて感じで使います。
提示した4件については使い分けの明確な条件は無く状況に応じて使い分けます。使っていくと各自で住み分けが出来てくると思いますのでまずは気にせず一通り理屈を覚えていきましょう。
では「If~Then」から。
以前 社内のVBA勉強会用に用意した記事でも説明させていただいてますのでひとまずリンクを貼らせていただきます。
リンク先の中段から後半にかけて「If~Then」の説明をしています。
(リンク先ではIF文という表現をしています)
リンク先と内容重複するところもありますが説明を続けます。
最初に型(フォーマット)を提示します。
↓以下がフォーマットです。
IF 条件 Then
条件がTrueだった時の処理
Else
条件がFalseだった時の処理
End If
こんな感じで「If~Then」の他にも「Else」と「End IF」が加わりフォーマットが形成されます。
基本は水色の文字の部分がベースになって間に条件や処理を記入します。
ただし「Else」だけは必要に応じて記入します。「〇〇のときは××する」だけ設定したいときは「〇〇じゃない時」の事を考えなくて良いのでElseは必要無い為です。
必ず必要なのは「If」「Then」「End If」。状況に応じて「Else」も必要。という事になりますね。
最初に指定した条件に当てはまるときは「True」となりますので上段へ処理を書く。条件に当てはまらない時は「False」となりますので下段へ処理を書くといった具合にコードを書き分けます。
基本となる「If~Then」ではこのように1つの条件に対して最低1つ、最高2つの選択肢を提示出来ます。
では実際にコードを書いてみましょう。
ひとまず「コード+日本語」で書いてその後コードに置き換えてみます。
IF セルA1が”おはようございます”だったら Then
セルA2に”おはようございます”を入力 ・・・ True の時
Else
セルA2に”こんにちは”を入力 ・・・False の時
End If
これをコードとして書いてみます。
If Range("A1") = "おはようございます" Then
Range("A2") = "おはようございます"
Else
Range("A2") = "こんにちは"
End If
このような形になります。
型(フォーマット)が決まっていて条件と選択肢を決まった位置に書くだけなので扱いやすそうですね。
コードを実行した結果は以下のようになるはずです。
「おはようございます」以外は「こんにちは」になります。
セルA1が空欄(無言)でもセルA2に「こんにちは」が入力される仕様です。
処理としては合ってます。期待した結果が出ているのですがこれだと生活の実態に合ってない気がします。
朝「おはよ」に対して「こんにちは」は返さない(多分)ですよね。無言ですれ違った人に「こんにちは」って言ったら「?」ってなりそうです。
日々の生活の1コマを表現するには上記コードでは少し足りない気がします。
「挨拶」という行為は1つだとしても挨拶に種類がありますのでIF~Thenだけでは表現するのが難しそうです。
ではもう少し条件、処理について他の条件分岐を使いながら深堀りしていきましょう。