Tip:
Highlight text to annotate it
X
エクセルVBAの使い方講座 上巻 第4章 条件判断
第4章では、条件を判断して、処理を分岐する 制御構文について学習します
条件判断は、VBAプログラミングの基本で、
複雑な処理を実行するためには、欠かせません
エクセルにも、If関数があります
If関数は、条件を判断して、 セルの表示を変更することができます
これと同じように、VBAでも、
条件を判断して異なる処理を実行するように、 プログラムを組むことができます
条件判断に使用するのは、Ifステートメントです
構文は、こうなります
Ifの後に、条件を判断する式を記述します
そして、その条件に当てはまる場合の処理をThenの後に、
条件に当てはまらない場合の処理は、 Elseの後に記述します
Elseは省略することもできます
省略すると、条件式に当てはまらない時は、 何も実行されません
最後に、Ifステートメントが終わることを示す End Ifを記述します
これが、Ifステートメントの基本構文です
では、Ifステートメントを使用して、
セルB5に入力されている四則演算の記号によって、 計算処理を分岐するようにしてみましょう
+(プラス)記号が入力されている場合は、 数値1と数値2を足算し、
-(マイナス)記号が入力されている場合は、 数値1から数値2を引算する、といったようにします
サンプルファイルSample03.xlsを用意して、 ファイルを開いてください
このサンプルは、第3章で作成したファイルに、 少し手を加えたものです
変更されているのは、セルA5とB5だけです
ツールメニューのマクロから Visual Basicエディタを選択します
VBEが開きました
モジュール1のコードを確認します
記述されているコードは、 第3章で作成したものと同じです
ここに、Ifステートメントを追加していきます
しかし、その前に変数を1つ宣言しておきましょう
これは、セルB5に入力された 四則演算の記号を格納する変数です
変数名は、Enzanとします
変数Answerの後に、1行改行しまして、
Dim Enzan As そしてデータ型はStringにします
Stringは、文字列を格納するデータ型です
続いて、変数Enzanに セルB5に入力されている記号を格納します
代入演算子=(イコール)を使用して、 画面のように入力します
これで、変数Enzanに 四則演算の記号が格納されます
ここから、Ifステートメントを記述していきます
Ifに続いて入力するのが、条件式です
条件式では、 変数Enzanに格納されている文字列を評価します
今まで、代入演算子として使用してきた、 =(イコール)が使われています
しかし、ここでは意味が異なり、 左辺と右辺が等しいという意味の比較演算子になります
=(イコール)の右辺の+(プラス)記号は、 "(ダブルコーテーション)で囲まれています
VBAでは、文字列を扱う場合には、 "(ダブルコーテーション)で囲わなければなりません
変数Enzanに格納されているのが、 +(プラス)だった場合の処理は足し算です
Thenの後に、足し算の処理を追加します
足し算ではなかった場合には、 引き算、掛け算、割り算の処理をさらに分岐する必要があります
このような場合には、 ElseIfというキーワードを使用して条件式を追加します
これを必要な分だけ追加します
掛けるの算術演算子は*(アスタリスク)
割るの算術演算子は/(スラッシュ)を使用します
では、ここまでの処理をコードウィンドウに追加しましょう
コードの入力例はこのようになります
プログラミングでは、処理のまとまりを判りやすくする為に、 インデントを付けるのが一般的です
Ifステートメントも1つのまとまりなので、 インデントを付けておきましょう
IfからEnd Ifまでを範囲選択して、 キーボードからTabキーを押してください
選択した範囲が右にずれましたよね
条件が満たされた時の処理も判りやすい様に、 インデントを付けておきましょう
Answerの前に、カーソルを合わせ、 Tabキーを押してください
プログラムが完成したので、動作を確認してみましょう
画面をエクセルに切り替えます
数値1に100、数値2に25と入力します
計算の種類は+(プラス)にします
計算ボタンをクリックすると、答えに125と表示されます
では、計算の種類を変更してみましょう
まずは、-(マイナス)記号を入力して計算します
答えが75になります
続いて、掛けると割るも計算すると、 それぞれの答えが2500と4になります
セルB5に入力されている計算記号によって、 異なる処理を実現することができました
サンプルファイルは保存して閉じておきましょう
条件判断には、もう1つSelect Caseステートメントがあります
構文は画面のようになります
構文の始めの行で値を評価して、 値と条件が等しい時に、そのブロックの処理を実行します
どの条件に一致しない場合は、 Case Elseのブロックが実行されます
Case Elseは省略することもできます
この場合処理は何も行われません
構文の最後には、 ステートメントの終わりを表すEnd Selectがあります
条件判断が多い場合には、 IfステートメントでElseIfを何回も使用するよりも、
Select Caseステートメントを使用したほうが、 読みやすいコードになります
Ifステートメントで記述したコードを Select Caseステートメントで書き直してみましょう
サンプルファイルSample04.xlsを用意してください
ファイルを開き、VBEを開いてください
Ifステートメントが記述されているので、 範囲選択して削除します
Select Caseステートメントで最初に評価する値は、 計算記号が格納されている変数Enzanです
そして、Caseに続いて、条件式 ここでは、+(プラス)を記述します
次の行には、計算の処理を記述します
同じように、引く、掛ける、割るの条件式と処理を追加します
Case Elseは省略して、 最後に、End Selectを記述します
コードの完成例は、このようになります
コードを読みやすいように、 インデントも付けておくと良いでしょう
Ifステートメントと同じように、 計算できるかどうか確認しましょう
画面をエクセルに切り替えます
数値1に30、数値2に5と入力します
計算の種類はプラスにします
計算ボタンをクリックすると、答えは35と表示されます
ほかも同じように、計算してみましょう
答えが正しく計算され、Select Caseステートメントが 正しく動作することが確認できました
サンプルファイルは保存して閉じておきましょう