Subプロシージャを記述する

VBA ではプログラムを Sub プロシージャの中に記述します。 Sub プロシージャは「Sub プロシージャ名」から始まって「End Sub」 で終わり、このあいだに実行する処理を記述していきます。 Excel ではプロシージャ名を指定してプログラムを実行することができます。ここでは Excel VBA で Sub プロシージャを記述する手順について解説します。

(Last modified: )

Subプロシージャとは

Sub プロシージャの構文は次のようになっています。

Sub プロシージャ名()

End Sub

プロシージャは Sub で始まり End Sub で終わります。この間に実際のコードを記述します。そしてプロシージャを識別するために「Sub」の後ろにプロシージャ名を記述します。

VBE のモジュール内には複数の Sub プロシージャを記述できるので、それぞれのプロシージャを区別するために Sub のあとにプロシージャ名を指定します。プロシージャ名はアルファベット、ひらがな、漢字などを使えます。数字も使えますがプロシージャ名の先頭には文字を使わなければなりません。またアンダーバーは使えますが記号やスペースなどは使えません。

正しいプロシージャ名:

Sub Test()
Sub 印刷する()
Sub テスト_011()

誤ったプロシージャ名:

Sub 011Test()  '数字から始まってはいけない
Sub テスト@()   '使用できない記号 @ が使われている

VBA では 1 つのモジュール内に複数の Sub プロシージャを記述することができます。複数の Sub プロシージャを使用する場合は、それぞれ異なるプロシージャ名を指定して Sub プロシージャを記述してください。

Sub 計算()
    ...
    ...
End Sub

Sub グラフ作成()
    ...
    ...
End Sub

※ VBA では Sub プロシージャの他に Function プロシージャというものがあります。大きな違いは Sub プロシージャが戻り値を返さないのに対して Funciton プロシージャは呼び出し元に戻り値を返すことができます。 Function プロシージャについては別のページで詳しく解説します。

Subプロシージャを記述する場所

Sub プロシージャを記述するには Visual Basic Editor を起動します。

Subプロシージャを記述する場所(1)

Sub プロシージャはモジュールの中に記述します。現在のブックにモジュールがまだない場合は、「挿入」をクリックし、表示されたメニューの中から「標準モジュール」をクリックしてください。

Subプロシージャを記述する場所(2)

標準モジュールが追加されます。

Subプロシージャを記述する場所(3)

追加した直後はコードウィンドウが追加したモジュールの内容を表示したり編集したりする状態となっています。複数のモジュールを追加していたり、コードウィンドウに別の内容が表示されている場合には、これからコードを記述するモジュールをダブルクリックしてください。コードウィンドウに現在モジュールに記述されているコードが表示されます(まだコードは何もないので現在は空です)。

Subプロシージャを記述する場所(4)

ではコードウィンドウで Sub プロシージャを記述します。

Subプロシージャを記述する場所(5)

同じモジュール内に複数の Sub プロシージャを記述することもできます。複数の Sub プロシージャを記述すると、プロシージャとプロシージャの間に自動的に横線が表示されます。

Subプロシージャを記述する場所(6)

なお Excel でマクロを記録すると標準モジュールの中に Sub プロシージャが自動で作成され、マクロ名がプロシージャ名として使用されます。そしてマクロとして保存された操作内容が VBA のプログラムとして Sub プロシージャ内に記述されます。詳しくは「Excel VBAとマクロの違い」を参照されてください。

Subプロシージャを実行する

Excel では記述した Sub プロシージャを指定して実行することができます。複数の Sub プロシージャを記述していた場合は、その中の一つを選択して実行します。

例えばモジュールの中に 2 つの Sub プロシージャがある状態で実行してみます。どちらかの Sub プロシージャの Sub から End Sub の中にカーソルがある状態で、「実行」をクリックし、表示されたメニューの中から「Sub/ユーザーフォームの実行」をクリックしてください。

Subプロシージャを実行する(1)

カーソルがあった Sub プロシージャが呼び出されて実行されます。今回は「グラフ作成」 Sub プロシージャ内にカーソルがあったので「グラフ作成」が実行されました)。

Subプロシージャを実行する(2)

今度はカーソルがいずれの Sub プロシージャ内にもない状態で「実行」をクリックし、表示されたメニューの中から「Sub/ユーザーフォームの実行」をクリックしてください。

Subプロシージャを実行する(3)

実行する Sub プロシージャの選択画面が表示されます。「マクロ名」のところにプロシージャ名の一覧が表示されるので、実行したいプロシージャ名をクリックして選択したあとで「実行」をクリックしてください。

Subプロシージャを実行する(4)

選択した Sub プロシージャが呼び出されて実行されます。

Subプロシージャを実行する(5)

このように Excel では Sub プロシージャ単位でプログラムを呼び出して実行することができます。

-- --

Excel VBA で Sub プロシージャを記述する手順について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。