エクセルマクロ(EXCEL VBA)

エクセルマクロ(EXCEL VBA) その7 Ifで条件分岐(If)

Ifを使った条件分岐

その5

その6でFor Nextを使った繰り返し作業を学びました。
今回は、For Nextと共にとても重要な If を使った条件分岐についてご紹介します。

もし○○だったら、△△する

というように、条件によってセルに書き込むものを変えることができます。
例えば、公演チケットの券売状況を記した表があったとします。

券売の表

80%以上であれば「好調!」

と入れられるようなものを作ってみましょう。

まずは、開発→Visual Basic
挿入→標準モジュールとして、
sub kenbai_hantei
と入力してエンターを押します。

※マクロの始め方は、その2をご参照ください。

kenbai_hanteiのプロシージャ

F2のセルを狙いたいので、Cellsで表現すると
Cells(2, 6)ですね。

cells(2,6) = "好調!"

と打って、合ってるか確かめてみましょう。

好調!

これを実行すると、

好調と入れられた

うまくF2のセルに「好調!」と打ち込めましたね。

でも、このままでは条件もなにもない状態なので、
続いて「80%以上の時に、好調!と打つ」という条件を記載していきましょう。

今のコードの前後にこういう感じに打ち込んでください。

If Cells(2, 5) >= 0.8 Then
    Cells(2, 6) = "好調!"
End If

IFの条件分岐の記述

上の赤線で記した行は、
Cells(2, 5)・・・ここでは94%となっているところです。
それが、 >= 0.8 ・・・80%以上だったら、と書いているわけです。
その後に必ず Then という文言が必要です。

そして、次の Cells(2, 6) = “好調!” は、もしCells(2, 5)が80%以上だったら実行する内容です。

実行する内容を書いた後に、
青線で書いてあるEnd Ifで締めるというのが、If文の書き方のルールです。

これを実行すると

試しに、表の方を修正して80%になるようにしてみましょう。
ちょっと心が痛みますが、券売を60にして、割合が75%になるようにしてみます。

券売が少ないと

これで同じマクロを実行してみてください。

 
何も書かれませんよね?
残念ながら80%に届いていないので、何も書かれないということでマクロの動作としては正解です。

 
ということで、Ifがうまく記述できたので、これを2行目から4行目まで、For Nextを使って繰り返しましょう。
Cells(2, 6)や、Cells(2, 7)となっている 2 のところが、2, 3, 4という感じで繰り返せばいいので、i で置き換えると

For i = 2 To 4
    If Cells(i, 5) >= 0.8 Then
        Cells(i, 6) = "好調!"
    End If
Next

ってことですね。

forで挟む

これを実行すると

千穐楽だけ「好調!」と入りました!
どうでしょう。うまく行きましたでしょうか?

実際80%以上の時だけうまく実行できるかどうか、券売数を変更して試してみてください。

 
ところで、60%以上の時には「もう少し!」と入れたくて、
さらに60%未満の時には「がんばれ!」と入れたいときにはどうしたらいいでしょう。

それが実現できる ElseIf という呪文を次回ご紹介します。

 
今回の最終的なコード

Sub kenbai_hantei()
For i = 2 To 4
    If Cells(i, 5) >= 0.8 Then
        Cells(i, 6) = "好調!"
    End If
Next
End Sub

 

宿題-7

同じ表を使って、13:00開演の公演の場合は、判定の欄に「マチネ」
18:00開演の公演の場合は、判定の欄に「ソワレ」と入るようにしてください。

エクセルマクロ(EXCEL VBA) その8 ElseIfを使った条件分岐(If ElseIf)

(文:森脇孝/エントレ)

関連記事一覧