「If … もしも~ならば」
これ英語の授業ででてきましたよね。じつはこれプログラミングでも同じ意味「もしも~ならば」でつかわれています。
今回はVBAでの具体的な「If」の使い方をご紹介いたします。
条件分岐処理とは
まずは前提となる「条件分岐処理」の考え方をおさえておきましょう。
こちらは条件によって次の処理を分けたいときに使います。
「条件を満たせばコレ、満たさなければアレ」のような考え方です。
以下は「セルA1が空白なら」値を入力し、「セルA1が空白でなければ」値を削除するといったときの流れです。
「セルA1の値」によって処理を分岐させたいときに使います。
共通の考え方
それではコードをつかってご説明をします。
これから記述したい内容はこちらです。
【スタート】マクロの名前:jouken_kyotsu (条件分岐の開始)もしセルA1が空白ならば セルA1に1を代入する (条件分岐の終了) 【ゴール】
コードでの記述はこちら。
Sub jouken_kyotsu() If Range("A1").Value = "" Then Range("A1") = 1 End If End Sub
条件分岐処理のポイントについて解説をします。
If (ここに分岐させたい条件を記述) Then
(ここに設定条件が正しかったときに動作させたい内容を記述)
End If
このような構成になっています。
赤色の部分は「記述必須」です。これを書いていないとエラーになります。
具体例な使い方
「If」にはさまざまな使い方があります。
基本となる考え方は共通しますが、「より複雑な動作」を記述したいときに「使いわけ」をします。
以下、具体的なコードをつかってご紹介します。
If ~ Then
こちらはさきほどご説明したとおりですが、もっとも基本的な考え方になります。
あらためて具体的なコードを使ってご説明します。
こちらが記述したい内容です。
【スタート】マクロの名前:if_then (条件分岐の開始)もしセルA1が5より大きいならば メッセージを表示「セルA1は、5より大きいです。」 (条件分岐の終了) 【ゴール】
こちらがコードの内容です。
Sub if_then() If Range("A1").Value > 5 Then MsgBox ("セルA1は、5より大きいです。") End If End Sub
マクロ実行の結果がこちらです。
セルA1が5よりも大きい場合「のみ」メッセージが表示されます。
セルA1が5以下の場合は、メッセージは表示されません。
「5より大きい」は「5」をふくみません。6,7,8,9…が該当します。
「5以上」は「5」をふくみます。5,6,7,8…が該当します。
If ~ Then ~ Else
こちらは「Else」が追加されていますね。
さっそく具体的なコードをつかってご説明します。
こちらが記述したい内容です。
【スタート】マクロの名前:if_then_else (条件分岐の開始)もしセルA1が5より大きいならば メッセージを表示「セルA1は、5より大きいです。」 そうでなければ メッセージを表示「セルA1は、5以下です。」 (条件分岐の終了) 【ゴール】
こちらがコードの内容です。
Sub if_then_else() If Range("A1").Value > 5 Then MsgBox ("セルA1は、5より大きいです。") Else MsgBox ("セルA1は、5以下です。") End If End Sub
「Else」のポイントはこちらです。
If (ここに分岐させたい条件を記述) Then
(ここに設定条件が正しかったときに動作させたい内容を記述)
Else
(設定条件が正しくなかったときに動作させたい内容を記述)
End If
マクロ実行の結果がこちらです。
セルA1が5より大きくない場合もメッセージが表示されます。
If ~ Then ~ ElseIf
こんどは「ElseIf」が追加されていますね。
さっそく具体的なコードをつかってご説明します。
こちらが記述したい内容です。
【スタート】マクロの名前:if_then_elseif (条件分岐の開始)もしセルA1が10以上ならば メッセージを表示「セルA1は、10以上です。」 (つぎの条件分岐)もしセルA1が5以上ならば メッセージを表示「セルA1は、5以上です。」 (さいごの条件分岐)どれにも該当しないならば メッセージを表示「セルA1は、5より小さいです。」 (条件分岐の終了) 【ゴール】
こちらがコードの内容です。
Sub if_then_elseif() If Range("A1").Value >= 10 Then MsgBox ("セルA1は、10以上です。") ElseIf Range("A1").Value >= 5 Then MsgBox ("セルA1は、5以上です。") End If End Sub
「ElseIf」のポイントはこちらです。
If (分岐させたい「条件1」を記述) Then
(「条件1」が正しかったときに動作させたい内容を記述)
ElseIf (さらに分岐させたい「条件2」を記述) Then
(「条件1」ではなく「条件2」が正しかったときに動作させたい内容を記述)
Else
(設定条件が正しくなかったときに動作させたい内容を記述)
End If
マクロ実行の結果がこちらです。
まとめ
「If」の使い方についてのご説明をいたしました。
マクロ作成では、かなりよく使われている印象をうけます。この条件分岐処理は複雑なマクロを作るうえでは必須の方法ですので、しっかりと理解を深めておきましょう。