ステートメント

ステートメントってIf文とかFor文のことだよね?



そうだよ!よく知ってるね!今日はステートメントの一部であるIfステートについて学んでいきましょう。
VBAにおけるステートメントとは、マクロの中で何かの働きをする命令です。条件分岐や繰り返しなど、マクロの動作を制御するものや変数宣言、ソースコードの記述を簡略化するものなど色んな命令(ステートメント)が用意されています。
Ifステートメント



今日使う実例はこちらになります。



空の”Sheet1″シートを準備して、下記コードを標準モジュールにコピーしてくださいね!
Sub IF_Statement()
Dim A As Long
Dim B As Long
'"Sheet1"シートをアクティブにします
Worksheets("Sheet1").Activate
A = Range("A1")
B = Range("A3")
If A < 100 Then MsgBox "変数Aは100より小さいです"
If A < 100 Then
MsgBox "変数Aは100より小さいです"
End If
If A < 100 Then
MsgBox "変数Aは100より小さいです"
Else
MsgBox "変数Aは100以上です"
End If
If A < 100 And B < 100 Then
MsgBox "変数AもBも100より小さいです"
End If
If A < 100 Or B < 100 Then
MsgBox "変数AとBのどちらかは100より小さいです"
End If
End Sub
また以下より、演算子(“>”,”=”,And,Or など)を使いますので、こちらの記事も参考にしてください。


ある条件を指定し、その結果に応じて処理を変える方法を条件分岐と呼びますが、Ifステートメントは条件分岐の一種でいくつかの書き方があります。
If 条件 then 処理
条件が正しかったときのみ処理を行います。条件が正しくないときは何も実行しません。
処理は行末の改行までの記述になります。
If 条件 then
処理
End If
書式1と同じく条件が正しかったとき処理を行います。条件が正しくないときは、何も実行しません。
処理を複数行を使って記載できるため複数の処理を実行できます。
実務で使う上ではこの書式2と次に説明する書式3が主流になります。
If 条件 then
処理1
Else
処理2
End If
条件が正しかったとき処理を行います。条件が正しくないときは、何も実行しません。
どちらの処理も複数行を使って記載できるため複数の処理を実行できます。
実例を動かしてみましょう。空のSheet1を作成し、A1セルとA3セルに下記のように数値を入れてください。


A1セルの値を変数Aに、A3セルの値を変数Bに代入しています。
A = Range("A1")
B = Range("A3")
この場合、
変数Aの値は50
変数Bの値は100
がそれぞれ代入されます。
この条件で実行してみましょう。
書式1の例になります。
If A < 100 Then MsgBox "変数Aは100より小さいです"
変数Aの値が100より小さいためMsgBoxが動きます。


書式2の例になります。
If A < 100 Then
MsgBox "変数Aは100より小さいです"
End If
変数Aの値が100より小さいためMsgBoxが動きます。


書式3の例になります。
If A < 100 Then
MsgBox "変数Aは100より小さいです"
Else
MsgBox "変数Aは100以上です"
End If
変数Aの値が100より小さいため、If文は正しい(True)と判定され下記MsgBoxが動きます。


このように変数Aの値を100以上にすると、If文は正しくない(False)と判定され、Else以下のMsgBoxが動きます。
変数Aの値は100
変数Bの値は100




If ステートメントで複数の条件を指定
条件分岐には複数の条件を指定することができます。
複数の条件を指定するときは、それぞれの条件をAndまたはOrで仕切ります。
If 条件1 And 条件2 Then
条件1が正しいかつ条件2が正しい であれば
If 条件1 Or 条件2 Then
条件1が正しいまたは条件2が正しい であれば
実例の30行目以降の処理といっしょにみていきましょう。
If A < 100 And B < 100 Then
MsgBox "変数AもBも100より小さいです"
End If
If A < 100 Or B < 100 Then
MsgBox "変数AとBのどちらかは100より小さいです"
End If
変数Aの値は50
変数Bの値は100
の例だと、実例を実行した場合、Orの方の条件式の満たすことになります。


変数Aの値は50
変数Bの値は50
の例だと、実例を実行した場合、AndとOrの両方の条件式の満たすことになります。




まとめ
Ifステートメントは条件分岐の基本となる処理で、実務でも多用します。
今回の実例の値を自分で変更してどのように結果が変わるか検証してみてください。
今後、実践編でもより具体的な実例とともに紹介していく予定です。
コメント