処理を条件分岐させる[If文]|CATIAマクロの作成方法
今回はマクロ作成には必須の構文『If文(条件分岐文)』についての内容です。
VBAで条件分岐する際に使われる代表的な構文が「If文」です。
今回はそんな「If文」の書き方をサンプルコードと合わせて解説していきます。
非常に重要かつ使用頻度の高い構文なのでここでしっかりと押さえておきましょう。
今回学べる内容は以下のとおりです。
条件分岐文とは
If文の書き方(Else ElseIfも含む)
※サンプルコードでInputBox関数を使用しているので、InputBox関数が何ものか理解していない方は下記ページを先に読んでおくことをオススメします。
If文(条件分岐文)
条件分岐文とは文字のとおり、ある条件によって実行する処理の内容を分岐させるための文のことです。簡単に言えば「もし××の場合、〇〇をする」というようなイメージです。
処理を条件分岐させるには「If」を使って以下のように書きます。
If 条件① Then
処理①
End If
上記のコードの場合、「もし条件①を満たしていたら、処理①を行う」という動作を行います。
このとき、条件①を満たしていない場合は処理①は実行されないままマクロの処理が進みます。
サンプルコード
上記の構文を使ったサンプルです。
InputBox関数で受け取った数字が5より大きい場合のみメッセージが表示されます。
5以下の数字が入力された場合、数字以外が入力された場合は何も処理が行われません。
1 2 3 4 5 6 |
Dim InputSTR As String InputSTR = InputBox (“数字を入力してください。“) If InputSTR > 5 Then MsgBox "入力された数字は5より大きいです。" End If |
If Else文
上記のIf文ではある条件をみたしているときに処理を行うだけで、満たしていない場合には何も処理を行うことができません。
条件を満たしていない場合に何か処理を行いたい場合は「Else」を使い以下のように書きます。
If 条件① Then
処理①
Else
処理②
End If
上記の場合、「もし条件①を満たしていたら処理①を、満たしていなければ処理②を行う」という動作を行います。
サンプルコード
上記の構文を使ったサンプルです。
InputBox関数で受け取った数字が5より大きい場合「入力された数字は5より大きいです。」、5以下の数字が入力された場合/数字以外が入力された場合は「5より大きい数字を入力して下さい。」とそれぞれメッセージが表示されます。
1 2 3 4 5 6 7 8 |
Dim InputSTR As String InputSTR = InputBox (“数字を入力してください。“) If InputSTR > 5 Then MsgBox "入力された数字は5より大きいです。" Else MsgBox "5より大きい数字を入力して下さい。" End If |
If ElseIf文
「If文」「If Else文」はともに条件を1つしか指定することができませんでした。
複数の条件別に処理を割り振るには「ElseIf」を使い以下のように書きます。
If 条件① Then
処理①
ElseIf 条件② Then
処理②
ElseIf 条件③ Then
処理③
End If
上記の場合、「条件①を満たす場合は処理①を、条件②を満たす場合は処理②を、条件③を満たす場合は処理③を実行する」という動作を行います。
サンプル
上記の構文を使ったサンプルです。
InputBox関数で受け取った数字が5より大きい場合「入力された数字は5より大きいです。」、5以下の数字が入力された場合は「入力された数字は5以下です。」、数字以外が入力された場合は「入力値が無効です。」とそれぞれメッセージが表示されます。
1 2 3 4 5 6 7 8 9 10 |
Dim InputSTR As String InputSTR = InputBox (“数字を入力してください。“) If InputSTR > 5 Then MsgBox "入力された数字は5より大きいです。" ElseIf InputSTR <= 5 Then MsgBox "入力された数字は5以下です。" Else MsgBox "入力値が無効です。" End If |
条件の設定
これまでに出てきたサンプルを見ればある程度理解できると思いますが、条件の部分には計算式のような形で”条件式”を入力します。
If 条件① Then ’←この部分
処理①
End If
条件式に使用できる比較演算子(式)は以下のとおりです。
比較演算子 | 意味 |
A > B | AはBより大きい |
A >= B | AはB以上 |
A < B | AはBより小さい |
A <= B | AはB以下 |
A = B | AとBは等しい |
A <> B | AとBは等しくない |
たとえば「変数Xが10以上の場合」という条件にしたい場合は「If X >= 10 Then」と書きます。
ブール型の変数の場合は「If Y = True Then」「If Y = False Then」というように「True」「False」を使って条件分岐をすることも可能です。
条件文として「条件①と条件②どちらも満たす場合」や「条件①と条件②のどちらかを満たす場合」といった複数の条件を判定したい場合は、以下のいずれかの論理演算子を使います。
論理演算子 | 意味 |
A And B | AかつB |
A Or B | AまたはB |
Not A | Aではない |
たとえば「変数Xが10以上の場合」かつ「変数YがTrueの場合」という2つの条件を満たしている場合を条件式として表したいときは、「If X >= 10 And Y = False Then」というように論理演算子を使い2つの条件式をくっつけて使用することができます。
サンプルコード
上記の構文を使ったサンプルです。
InputBox関数で受け取った2つの数字のうちどちらか片方が5より大きい数字の場合のみ「入力した数字のいずれかは5より大きいです。」とメッセージが表示されます。
1 2 3 4 5 6 7 8 |
Dim InputSTR1 As String Dim InputSTR2 As String InputSTR1 = InputBox (“数字を入力してください。“) InputSTR2 = InputBox (“数字を入力してください。“) If InputSTR1 > 5 Or InputSTR2 > 5 Then MsgBox "入力した数字のいずれかは5より大きいです。" End If |
まとめ
今回はIf文(条件分岐文)についての内容でした。
条件分岐文として「Select Case文」というものもありますが、初心者のうちは今回やった内容さえ理解できていれば条件分岐で困ることはありません。
条件分岐はどのプログラミング言語でも重要な内容です。
これができないとユーザーが何も決めることのできない決められた動作しかできないマクロしか作成することができません。
使用頻度はかなり高い(ほぼどのマクロでも使用します)ので「If文」「If Else文」「If ElseIf文」は必ず理解しておきましょう。
参考:VBA開発元のMicrosoft社のIf文の説明ページ
→検索結果 ウェブ検索結果 If…Then…Else ステートメント (VBA) | Microsoft Docs
CATIAマクロを本気で勉強するなら