VBAでより複雑な処理を作るうえで欠かせないのが、「処理の分岐」です。
その処理の分岐を作るのに使うのが「IF文」といわれる文法です。
追記: PropsRoomというスキル情報メディアを運営しています。
こちらでもVBA入門ガイドを扱っています。
https://props-room.com/articles/handbook/vba-guide-1
IF文ってなに?
IF文を使うと、条件に当てはまった方のルートだけをコンピュータに読み進めさせることが出来ます。
イメージとしてはこんな感じです↓
この図では、変数の中身を判別して、「あいうえお」が入っていた場合は赤枠の処理、入っていなければ緑枠の処理に進ませています。
このように、入ってきた値によって次の処理を分岐させることが出来ます。
ExcelのIF関数を使ったことがあるなら、それとイメージは全く一緒です。
何となくイメージ出来たら、実際にコードを書いて動かしてみましょう!
IF文を使ってみよう!
コードを書く
では、まずはコードを書いていきましょう。
前に作ったモジュールをVBEで開いておきます。
まだ開いたことがない人はVBEとモジュールの開き方はこちらを参考にしてください↓
下のコードをコピーしてモジュールに貼り付けてください。
貼り付ける前に、モジュールはまっさらにしといてくださいね。
1 2 3 4 5 6 7 8 9 10 |
Sub MessageTest() Dim Hensu As String '変数 Hensu = Range("A2").Value '←「A2」セルの値を変数に代入 If Hensu = "あああ" Then MsgBox "これは「あああ」です" '←メッセージボックスで変数の値を表示 End If End Sub |
モジュールの中身はこんな感じになりましたでしょうか。
書いたコードは、「A2」セルに入力した値が「あああ」ならば、メッセージを表示するという処理です。
また、「あああ」ではなければ何も処理されません。
コードの解説は後ほどしますので、まずは実行してみましょう。
マクロを実行してみる
では、作ったマクロを実行してみましょう。
実行するとこんな感じになったかと思います↓
未入力の時や「あああ」以外が入力されていると、ボタンを押しても(マクロを実行しても)何のメッセージが表示されませんが、「あああ」を入力した時だけメッセージが表示されている事が分かりますね。
コードの意味
分岐を作っていたのはこのコードです↓
If Hensu = “あああ” Then
MsgBox “これは「あああ」です”
End If
このコードがIF文と言われる文法です。
「If」と「Then」の間に正となる条件を記述します。
今回は「あああ」なら正にしたかったので、「変数=”あああ”」にしました。
「=」は変数に代入するという意味だと以前説明しましたが、IF文の条件式の中では、数学と同じく「等しい」という意味で使われます。
なので「If Hensu = “あああ” Then」を日本語で直訳すると、
「変数Hensuと文字列”あああ”が等しかったら」となります。
「If 条件Then」の下に書かれているのが、正しかった場合に処理させたい内容です。
今回は正しかった場合はメッセージを表示させるようにしていました。
逆に、正しくなかった場合は、この処理を全て飛ばして「End If」にスキップします。
「End If」でこのIF文はここで終わりですよと言う意味になります。
今回作った処理は、正しくなかった場合に「End If」にスキップし次の行のコードが「End Sub(この関数の終わり)」なので、関数の処理が終了となります。
ボタンを押しても何も起こらないわけではなく、ここまで処理を行って関数が終了していただけだったわけです。
条件式に使う「比較演算子」を覚えよう
IFの条件文に使う「=」のような記号を「比較演算子」と呼びます。
比較演算子はその名の通り、比較に使う記号の事です。
よく使う比較演算子をまとめましたので、覚えておきましょう。
記号 | 記号の意味 |
---|---|
= | 等しい |
<= | 以上 |
>= | 以下 |
< | よりも大きい |
> | よりも小さい |
IF文はさらに分岐を追加できる
今回紹介したのは、IF文の初歩にすぎません。
IF文の真の力はこんなものではありませんよ!
今回は条件が正しかった場合に行う処理の記述しかしませんでしたが、正しくなかった場合にも処理を追加することが出来ます。
他にもまだあるのですが、今回はここまで!
次回はもっといろいろなパターンのIF文を使ってみましょう。
■次のページ