マクロのプログラムが書かれている「VBエディタ」を使いこなせるようになれば、マクロ記録だけでは作れない高度なプログラムが作れるようになります。また、マクロ記録で作ったプログラムを変更して、さらに使いやすいマクロにすることも可能です。最終回の今回は条件分岐や繰り返しの特別構文、および困ったときの対処法について解説します。
繰り返し処理や条件別指定ができる「特別構文」
VBAには、基本構文と組み合わせることで、便利なプログラムを作ることができる特別なコードがあります。それが特別構文です。特別構文は、使う構文によって決まった書き方(書式)があります。主な特別構文には、繰り返し構文、条件分岐構文、VBA関数などがあります。
【特別構文のおもな役割】
- 繰り返し構文
- 特定の処理を繰り返す構文。回数を指定して繰り返す「For…Next」構文、条件を満たす間だけ処理を繰り返す「Do…Loop」構文が代表的なもの。
- 条件分岐構文
- 条件式を満たす場合と満たさない場合に処理の流れを切り替えるもの。「If…Then…Else」構文と「Select Case」構文が代表的なもの。
- その他
- MsgBoxやDate関数などのVBA関数やワークシート関数など。関数はそれぞれ書式が違うので、そのルールに則って使用する。
繰り返し構文は、同じコードを連続して実行するときに使用します。条件分岐構文は、指定した条件への一致・不一致で実行するコードを変えられます。VBA関数はワークシート関数とは異なり、VBAで利用できる関数です。91ページでとりあげた「MsgBox」もVBA関数のひとつです。
【繰り返し構文の例】
- [書式]
For 変数 = 初期値 To 終了値
処理
Next [変数] - [解説]指定した回数分だけ処理を繰り返す構文。繰り返すのは「初期値」から「終了値」までの間。「変数」は繰り返されるたびに値が変わっていき、「終了値」の値になったときに処理が終了します。Nextのあとの[変数]部分は省略可能。
VBAには条件分岐構文が2種類あります。ここでは、条件分岐構文のひとつである「If構文」を紹介します。このコードは、指定した条件により実行するコードを切り替えられるようになります。
たとえば「もしも岡田が課長だった場合は外出する、課長でなかった場合は電話する」という内容をこの構文を使って書くとしたら「If 岡田が課長 Then 外出する Else 電話する End If」というコードになります。つまり、「If」と「Then」の間に条件式を指定し、この条件式が成立する場合は、「Then」以降のコードを実行します。条件式が成立しない場合はこのコードは実行されせん。「Else」以降の部分には、条件式が成立しなかった場合に実行するコードを指定することができます。
【条件分岐構文の例】
- [書式]
If 条件式 Then
処理A
Else
処理B
End If - [解説]Ifのあとに半角あけて条件式を記述。Thenのあとには、条件式が真(条件に合致する)のときに実行したい処理Aを、Elseのあとには、条件式が偽(条件に合致しない)のときに実行したい処理Bを記述する。
この連載の記事
-
第4回
ビジネス
Excel VBA実践編 II――属性変更も簡単 -
第3回
ビジネス
Excel VBA実践編――基本構文を知る -
第2回
ビジネス
Excel VBAエディタを使ってみよう -
第1回
ビジネス
Excel VBAで面倒な仕事を自動化しよう -
ビジネス
「Excel VBA」でプログラム入門 - この連載の一覧へ