プロシージャの構造

<< マクロの記録と実行 :前の記事

前回は、マクロの記録と実行を実際に行ってみました。記録されたマクロがどのように記述されているかが確認できたかと思います。今回は、作成されたプロシージャがどのような構造になっているのかについて解説します。

目次

プロシージャとは

プロシージャとは、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ステートメントのように複数行にまたがって構成されているステートメントもあります。

こちらでは、

で構成されています。

ステートメントの解説

コメントとは

とても複雑なプログラムコードの場合、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つ理解していきましょう。

次の記事: オブジェクト・コレクションとは >>

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

  • このエントリーをはてなブックマークに追加
ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。