条件分岐|If文の基本的な書き方・使い方

プログラミングを始めたばかりだと「プログラムができれば、何でも自動でパソコンがしてくれる」と思う人もいます。

たしかにプログラムを組めば自動でパソコンに処理をさせることはできますが、判断する時の条件は人間が教えてあげないといけません。つまり「○○○の時は、□□□を実行しろ」と、「条件」と「実行する内容」は人間が明確にして、プログラムを作ります。

この条件を指定する時に使うのが、今回説明するIf文です。If文は日本語で言うと「もし○○時は・・・」という意味になります。

 

エクセルのシートに次のようなデータがある前提で、If文の基本的な書き方・使い方を説明していきます。

条件の数によってIf文の書き方は少し違い、主に3つのパターンがあるので、それぞれ説明していきます。

スポンサーリンク

条件が1つだけの時

If 条件1
処理1
End If

処理1は、条件1となった時だけ実行される処理です。

文法を見てもピンとこないと思うので、実際に「5問全問正解の時、メッセージを表示する」プログラムを組んでみます。

※先頭に’が付いている行(‘セルB5の値が5の時、この中にある処理が実行されます)は、コメントという人間用のメモです。なので、このコメント部分はあってもなくても、プログラムの実行結果に影響はありません。

実際にこのプログラムを実行すると、次のようにメッセージが表示されます。

初めてのIf文なので、ちょっと細かく説明していきます。If文では条件を満たす時に、If文の中(If ~ End Ifの中)のプログラムが実行されます。

今回の例では、If文の条件は、

です。
ここで使われている「Range(“B2”).Value」は「セルB2の値」、その後の「 = 5」は「左辺の値が5と等しい」という意味になります。つまり日本語で言うと「セルB2の値が5の時」が条件になります。

条件が満たされた時に実行されるプログラムが、

です。
このMsgBoxは、直後で指定した内容(引数)を、メッセージボックスで表示してくれる便利な命令です。ここでは「おめでとう!5問全問正解です。」というメッセージを表示してくれます。

POINT
メッセージ内容を、”(ダブルクォーテーション)で囲んでいるのも大事なポイントです。このような文字を扱う時は、”で囲むと覚えてください。
POINT
If文の中の処理は、字下げをしてIf文の処理範囲がわかりやすいようにしましょう。
対象のプログラムを選択状態にして、Tabキーを押すと、複数行でもまとめて簡単に字下げができます。

 

If文の1番基本的な書き方を説明しましたが、実際に自分で同じようにプログラムを打ち込んで試してください。

説明を聞いた直後は「こんなの簡単。わかった」と思ってしまいますが、実際に自分でプログラムをすると、意外とつまづくことがあります。でも、その失敗や苦労が、VBAをマスターする1番の近道です。

 

プログラムを書く場所や動かし方がわからない場合は、「エクセルVBAを書く場所と動かす方法」で確認してください。

 

If文の条件で使う=について

プログラムの命令文で、Range(“B2”).Value = 5とあった場合、セルB2に5がセットされます。
でも、If文の条件Range(“B2”).Value = 5は、セルB2が5と等しいか判断するだけで、セルB2の値は変化しないので勘違いしないようにしてください。

 

メッセージが表示されない場合

メッセージが表示されない場合は、違うエクセルのシートがアクティブ(画面で1番上)になっている可能性が高いです。今回のクイズ結果のシートを一度表示してから、再度プログラムを実行してみてください。

POINT参考書のサンプルプログラムでも、Range(“B2”)とセルを指定している場合は、プログラムで処理するシートをアクティブにしてから、VBAを実行しましょう。

どのファイル、どのシートという指定もできますが、今は欲張らずに対象シートをアクティブにするとおぼえてください。

条件がYesかNoのように2つしかない時

If 条件1
処理1
Else
処理2
End If

条件1の時は処理1、条件1以外の時は処理2が実行されます。

さっきの例だと、「5問全問正解の時」しかメッセージが表示されませんでした。「5問全問正解以外の時」もメッセージを表示したい場合は、次のような書き方になります。

今回のように「5問正解」と「5問正解以外」の2つの状態(YesかNo)で処理をわけたい時は、Elseを使います。
If文の条件と一致しなかったときは、どんな値(今回の例だと5以外の全ての数)でも、Elseに書かれているプログラムが実行されます。

このブログラムを実行すると、エクセルシートの正解数(セルB2)の値によって、次のような結果になります。

・正解数が5の時は、次のメッセージが表示されます。

・正解数が5以外の時は、次のメッセージが表示されます。

条件が複数ある時

「5問正解」と「それ以外」ではなく、もっと条件を増やしたい場合は、次のようにElseIfで条件を追加できます。

If 条件1
処理1
ElseIf 条件2
処理2
Else
処理3
End If

 

たとえば、「5問正解の時」「4問正解の時」「それ以外の時」で処理をわける場合は次のようなプログラムになります。

このブログラムを実行すると、エクセルシートの正解数(セルB2)の値によって、次のような結果になります。

・正解数が5の時は、次のメッセージが表示されます。

・正解数が4の時は、次のメッセージが表示されます。

・正解数が5と4以外の時は、次のメッセージが表示されます。

「3問正解した時」など、もっと条件を追加したい場合は、次のようにElseIfを増やしてプログラムを書くことができます。

まとめ

今回はIf文の基本的な説明をしましたが、とても大事な文法です。複雑な処理も、このIf文をいくつも組み合わせることで実現しています。

そのため、読むだけでなく1度は自分でプログラムを入力して実行してみてください。

 

関連記事

初心者のためのエクセルVBA超入門講座
初心者のためのエクセルVBA超入門講座
エクセルVBAおすすめ本|実際に読んだ本を目的別に紹介
エクセルVBAおすすめ本|実際に読んだ本を目的別に紹介
中途・未経験でプログラマーに転職する方法【30代前半までが勝負】
中途・未経験でプログラマーに転職する方法【30代前半までが勝負】
VBA超入門
スポンサーリンク
えくとしょ | 初心者のためのエクセルとVBAの図書館
タイトルとURLをコピーしました