マクロ「If」の使い方・文字列式や複数条件【VBAで行う複数処理】

マクロとは

実際に「if」について学ぶ前に、マクロがどのようなものか紹介します。vbaと言葉の意味を比較されることも多いですが、マクロとは簡単に言えば「機能」のことです。エクセルやその他アプリケーションにおいて、あらかじめ設定された手順によって制御する機能のことです。例えばエクセルの場合、グラフを挿入するにもセルを選択してボタンを押すだけでグラフが出来上がります。このように、よく使うと思われる手順をマクロとして残しておけば何度も同じ作業をしなくてもよくなります。

マクロとvbaの違い

マクロとvbaは似た使い方で使用される言葉ですが、厳密には異なります。vbaはVisual Basic for Applicationsの略称です。簡単に言えば、マクロを作成するときに使われるプログラミング言語です。マクロは機能、vbaはコードを作成する言語という違いがあります。そのため、マクロを構成するためにvbaで「if」の処理を行うという形になります。

マクロを使い始める手順

エクセルでマクロを使うのであれば、まずは「開発」というタブを有効にする必要があります。初期状態ではリボンに表示されていないため、特別に設定をします。「ファイル」、「オプション」と進み、「リボンのユーザー設定」に進みます。この中の「メインタブ」で「開発」にチェックして最後に「OK」を押します。すると開発タブが追加されてすぐに使えるようになります。 ここの「マクロ」をクリックして実行したいマクロ名を選択、実行すると機能します。vbaを記述していくには「マクロ」の中の「マクロの表示」から新規作成をしていくとプログラムを組めるようになります。

マクロvbaによる「if」の使い方

ifステートメントとは

マクロで「if」を使う場合、その命令文のことをifステートメントと呼びます。ifステートメントを使うことで、ある条件に応じた処理を行わせることができます。処理を分岐させることができるとも言います。何かの機能を備えたマクロを作る場合、ある条件下においてのみ処理をしたいときや、条件によって処理の内容を変えたいときもあります。これを実現できるifステートメントは、プログラムを組むときには非常に重要となります。複数処理や複数条件などを与えることで複雑な処理も可能となり、実際、ほとんどのマクロvbaでは自動化のためにifステートメントを使った条件処理が行われています。 ifステートメントでは文の中に条件を書き込み、その条件式に合っているか調べます。合致していれば「true」を返し、処理を実行することになります。いくつかの条件式を判定に使う場合「複数条件」、処理の内容を増やすことを「複数処理」と言います。 マクロvbaに限らず、「if」文では一般的に複数条件をつけることも複数処理を行わせることも可能です。

「if」を使ったマクロvbaの書き方

ifを使ったプログラムの最も基本的な形は、 if 条件式 Then 処理内容 であり、複数条件も複数処理もしていません。これは一行で記述した場合のもので、通常は複数行にまたぐため、以下のようになります。 if 条件式 Then   処理内容 End if 条件式を満たせば処理内容を実行します。しかしifを使ったプログラムではここまで単純であることはあまりありません。条件を満たさなかった場合の処理内容も記述することが多いです。この場合if~ElseIfステートメントとなり処理を分岐させることができます。それぞれ偽の場合の処理内容を追加した場合のものを記述しています。 if 条件式 Then 真の処理内容 Else 偽の処理内容 または if 条件式 Then   真の処理内容 Else   偽の処理内容 End if という形になります。真偽とは条件式を用いるプログラムでよく出てくる言葉です。条件を満たす場合を「真」、満たさない場合を「偽」の状態と言います。ただし実際に記述するときにはいきなり「if」から始めるわけではありません。名前を付け、その中にIf文などの処理内容を書いていきます。下の例では「if_sample」がその名前です。AがBと同値であれば処理1を、同値でなければ処理2を実行することになります。 Sub if_sample_1()   if A=B Then     処理1   Else     処理2   End if End Sub

「if」文で複数処理を行う方法

複数処理と聞くと難しそうに思うかもしれませんが、非常に簡単なことです。基本形のif文ではifからEnd ifの間に処理内容を記述しますが、ここに追加で処理を記述するだけで複数処理ができます。下のように複数行書くだけです。 Sub if_sample_2()   if A=B Then     処理1     処理2     処理3   End if End Sub 偽の場合の処理があっても同様に追加していくだけです。 Sub if_sample_3()   if A=B Then     処理1     処理2   Else     処理3     処理4     処理5   End if End Sub

マクロvbaにおける条件式の書き方

これまでは「A = B」という非常にシンプルな条件式を例にしていましたが、「=」以外にも条件式に使うことができます。例えば「<」や「>=」などがあります。「A >= B」の場合は「Aの値がBの値以上で真」ということになります。

マクロvbaで使える比較演算子の種類

「=」や「<」などは比較演算子と言います。条件式で真偽を判定するために使われる演算子になります。いくつか基本的なものを紹介します。 ・=  :等しい ・<  :より小さい ・<= :以下 ・>  :より大きい ・>= :以上

マクロvbaで使える論理演算子の種類

比較演算子が出てきたついでに論理演算子についても触れておきます。if文で複数条件をつける際に必要となる演算子です。「And」と「Or」、「Not」を覚えておきましょう。 ・And :Andで繋がれた複数の条件を満たした場合に真となる ・Or  :Orで繋がれた複数の条件のどれかひとつを満たせば真となる ・Not :条件式を満たさなければ真となる

複数条件をつけた「if」文の例

それでは上の論理演算子を使うとどのようにな文になるのか見ていきましょう。 ・条件式1 And 条件式2 ・条件式1 Or 条件式2 という形になるため、 Sub if_sample_4()   if A=B And C=D Then     処理1   Else     処理2   End if End Sub と表記されます。「A = B」であり「C = D」でもある場合に処理1が実行されます。この条件式の「And」を「Or」に変えれば「A = B」か「C = D」であれば処理1が実行されます。

「if」を使った文字列判定1

if文を使えば、二つの文字列が等しいかどうか判定することができます。これまで「A = B」としていた条件式をより実践的な形に変形していきます。 Sub if_sample_5()   if ActiveCell.Value = ”マクロで文字列判定” Then     処理1   Else     処理2   End if End Sub アクティブセルに「マクロで文字列判定」という文字が入力されていれば処理1を行います。

「if」を使った文字列判定2

もうひとつ文字列判定のパターンを見てみましょう。こんどは同じ文字列かどうかの判定ではなく、ある文字列が含まれているかどうかを判定します。 Sub if_sample_6()   if InStr(ActiveCell.Value, ”マクロ”) > 0 Then     処理1   Else     処理2   End if End Sub この場合条件式にInStr関数が入っています。これは第一引数の文字列に第二引数の文字列が含まれていればその位置を数値で返す関数です。含まれていない場合は0になります。そのため文字が含まれていれば0という数値を返すことがないため、比較演算子を使って結果が0より大きいかどうかを条件としています。上の例ではアクティブセルに「マクロ」という文字列があれば処理1を行います。

「if」を覚えてマクロvbaを使いこなそう

マクロではいろんな便利なことができます。しかしこうした数々の機能を実現するためには「if」が用いられているのです。ここでは簡単な例のみを紹介してきましたが、複雑で実用的なプログラムの中でも「if」は使われています。vbaの初歩として学ぶべきステートメントのひとつでもあるので、是非使いこなせるように練習していきましょう。