ここまでのVBAマクロでは、記述された順番に処理を実行していくものでした。
ですが、Excelでデータを分析したり計算したりする場合には、ある条件で処理を分岐させるなどの必要が出てきます。
このように処理を分岐するための命令として、「If~Then」ステートメントがあります。
その前に「ステートメント」という用語を解説します。
ステートメントとは
ステートメントとは、処理の最小単位のことです。
ちなみに、同じような用語に「関数」というものがあります。
ステートメントと関数は厳密には異なるものですが、今の時点ではそれを意識しなくても問題ないですので、ガシガシとコートを書いていきましょう(笑)
ちなみに、ステートメントの具体例なものは以下のものになります(ほんの一例です)
- Dim : 変数を宣言し、メモリ領域を割り当てます。
- If~Then : 条件によって処理を分岐します。
- Open : ファイルを開いて、ファイルへ入出力できるようにします。
などがあります。ステートメントは何十個もありますので、今後少しずつ学習していけば大丈夫です。
If 条件式 Then 処理
「If~Then」ステートメントは、名前のとおり「もし~だったら、〇〇をする」というように、条件を満たしたときだけ処理を実行するものです。
記述方法は、
If 条件式 Then
処理
End If
というように記述します。
「条件式」が「真」のと場合(つまり条件式を満たした場合)、「処理」が実行されます。
逆に言えば、条件式を満たさない場合には、「処理」が実行されません。
If~Thenの動作例
それでは、If~Thenの動作を確認してみましょう。
下の図のように、「佐藤太郎の得点が150点」と表示されています。
これを、「もし、佐藤太郎の得点が100点より大きければ、得点の文字色(つまりセルC3)を赤色にする」というIf~Thenのコードを記述してみます。
Sub 例()
Dim Tokuten As Long
Tokuten = Cells(3, 3).Value '変数 Tokuten にセルC3の値を格納
If Tokuten > 100 Then 'もし、Tokutenが100より大きければ、、、
Cells(3, 3).Font.ColorIndex = 3 'セルC3の文字色を赤色に設定する
End If 'If~Then文の終わり
End Sub
これは、If~Thenの中で、
「セルC3の数値が100より大きければ、文字色を赤色にする」
という条件処理を指定しています。
実行すると、
得点が100点より大きいので、セルC3の文字色が赤になりました。
この「条件が満たされる」ことを、
「真(しん)」や「True(トゥルー)」
といいます。
それでは、もし得点が100より大きくなければどうなるのでしょうか。
実行してみると、If~Thenの条件式である「100点より大きい」を満たしていないので、If~Thenの処理は実行されないので、得点の色は赤色に変わりません。
この 「条件が満たされない」ことを、
「偽(ぎ)」や「False(フォルス)」
といいます。
If~Thenのまとめ
If~Thenは、「もし~だったら、〇〇をする」というように、条件を満たした場合に処理が実行されます。
逆に、条件を満たさない場合には処理が実行されません。
コメント
[…] 参考: Excel VBA入門 その20:条件によって処理を分岐する(If~Then 命令) […]
[…] 参考:Excel VBA入門 その20:条件によって処理を分岐する(If~Then 命令) […]
[…] 参考:Excel VBA入門 その20:条件によって処理を分岐する(If~Then 命令) […]
[…] 参考: Excel VBA入門 その20:条件によって処理を分岐する(If~Then 命令) […]