プロシージャの構造
<< マクロの記録と実行 :前の記事
前回は、マクロの記録と実行を実際に行ってみました。記録されたマクロがどのように記述されているかが確認できたかと思います。今回は、作成されたプロシージャがどのような構造になっているのかについて解説します。
目次
プロシージャとは
プロシージャとは、VBAの命令文を1つにまとめたものです。VBAコードは1行ごとに命令文を記述して実行されますが、通常のマクロでは複数の命令文を記述してまとめて実行します。そのようにまとめられた命令文がプロシージャになります。
また、プロシージャには以下の3つがあります。こちらについては「エクセルVBAのプロシージャとは」で詳しく説明していますので、ご確認ください。今回はSubプロシージャについて簡単に解説していきます。
- Subプロシージャ
- Functionプロシージ
- Propertyプロシージャ
Subプロシージャの使い方
Subプロシージャを利用するには決まった書式に則って記述します。決まった書式とは、以下のような書式になります。プロシージャ名は自由に命名できますが、命名ルールがありますので、ご注意ください。
Sub プロシージャ名()
処理の内容
End Sub
- ①冒頭に「Sub」を記述し半角スペースを空けます。
- ②プロシージャ名の後に半角の「()」(カッコ)を記述します。
- ③処理の内容を記述します。
- ④最後に「End Sub」を記述します。
下記はマクロの記録と実行で自動作成されたSubプロシージャになります。「Macro1プロシージャ」と「Macro2プロシージャ」で構成されているのが確認できるかと思います。
ステートメントとは
下記は前回マクロの自動記録から作成されたマクロですが、多くのステートメントで構成されています。ステートメントとは、「命令文」と訳されるように、コンピュータに具体的な動作を指定する最小単位のプログラムのことを言います。
最小単位のプログラムですので、通常は1行で完結するものがほとんどですが、If~Then~Elseステートメントのように複数行にまたがって構成されているステートメントもあります。
こちらでは、
- プログラムを開始宣言するSubステートメント
- 各命令のステートメント(Range("A2").Selectなど)
- プログラムを終了宣言するEnd Subステートメント
で構成されています。
コメントとは
とても複雑なプログラムコードの場合、1つ1つの処理がどのようなものか分かるようにコメント書きをする場合があります。プログラム中にコメントを入力したい場合は、「'(シングルクォーテーション)」をコメントの先頭に記述することでコメント扱いになります。コメントの範囲については、「'(シングルクォーテーション)」から改行されるまでの文言になります。
インデントとは
インデントとは、段落単位で文字位置を下げることが出来る機能で可視性を高めるものです。一般的にはタブキーを押下することで、インデントを入れることができます。
Macro2プロシージャでは、If~Then~Elseステートメントで一段下げて、その中の処理を更に一段下げています。このようにステートメントレベルでインデントを利用することで可読性が高まります。
コードの改行
1つのステートメントで長いプログラムを記述する場合は、横長になり非常に見にくくなります。そういった場合にコードの途中でも改行することができます。
ステートメントを次の行へ続けたい場合は、改行を行う前に「 _(半角スペース+アンダースコア)」を記述することで、複数行で記述したとしても1つのステートメントとして認識されます。
以下はIf~Then~Elseステートメントと演算子を利用したプログラムでIf文の条件式の部分を改行しています。
Sub sample()
If a = 1 Or _
a = 2 Or _
a = 3 Then
MsgBox "aは1,2,3のいずれかです"
End If
End Sub
1行で複数の命令文を記述する方法
上記では、コードの改行を行うことで複数行でも1つのステートメントとして認識させましたが、1行で複数の命令文を記述する方法もあります。1行でプログラムを記述したい場合は、「:(コロン)」を利用することで複数の命令文も1行で記述することができます。
下記は、通常の記述と複数の命令文を1行で記述したものになります。
Sub sample()
'それぞれの命令文を記述
strValue = "1行命令文"
MsgBox strValue
End Sub
Sub sample()
'複数命令文を1行で記述
strValue = "1行命令文": MsgBox strValue
End Sub
まとめ
今回は、プロシージャの構造について、それぞれ解説していきました。ここまでで自動記録されたマクロがどのように構成されているかが理解できたかと思います。
次回は、ステートメントがどのような構造になっているのかについて解説していきます。先にお話しするとプログラムはすべてオブジェクトから成ります。初心者の方にとってオブジェクトの概念について理解するのは中々難しいですが、1つ1つ理解していきましょう。
次の記事: オブジェクト・コレクションとは >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。