スポンサーリンク

【初心者向け】Excel VBA(マクロ) 他のプロシージャを呼び出す Call ステートメントの使い方


Excel  VBA(マクロ)を使うと、コードを分割したくなることがあります。

特に様々な Excel ツールで共通して使うような部分があると、そこだけは分けておきたいと感じます。

さて、そのようなときに Call ステートメントを使うと便利です。

今日は Call ステートメントの使い方についてお話しします。

Callステートメント

スポンサーリンク

1、Call ステートメントの使い方

Call ステートメントの使い方

Call ステートメントはプロシージャを呼び出すのに使います。

以下のように記述します。

Call プロシージャ名

プロシージャとは VBA コードのかたまりで、1 つのプロシージャで1 つの役割を持っているイメージです。

プロシージャには、Sub プロシージャと Function プロシージャの2種類があります。

Sub プロシージャ
・・・Sub 〜 End Sub で囲まれる範囲

Function プロシージャ
・・・Function 〜 End Function で囲まれる範囲

Call ステートメントを使った一例 ①

Call ステートメントでSub プロシージャを呼び出すを呼び出す簡単な例を取り上げます。

1つのモジュールの中に Test1、Test2 の2つのプロシージャを作ります。

Test1 プロシージャを実行すると 2つのメッセージボックスが続けて出てきます。

Image

Image(2)

最初に Test1 プロシージャの中で「おはようございます。」と表示させてから、Test2 プロシージャを呼び出しています。

Test2 プロシージャには「こんにちは。」というメッセージを表示させるだけの役割を持たせてあります。

Call ステートメントを使った一例 ②

さて、もう1つ例を示しておきますね。

次の Excel シートに入力された売上高と売上原価から原価率と利益率を計算して表示して、CSV ファイルに書き出すコードを取り上げます。

Image(3)

以下のようなコードを作ります。

Calc プロシージャを実行すると、原価率、利益率の計算が行われて同じフォルダの中にある CSVファイルに書き込まれます。

原価率、利益率の計算↓

Image(4)

CSVファイルへの書き込み ↓

Image(5)

Calc プロシージャの中で Call ステートメントを使って「Transform_to_Csv」という名前の Sub プロシージャを呼び出して、シートの内容を「出力ファイル.csv」に書き出しています。

Transform_to_Csv プロシージャは同じフォルダ内の CSVファイル(出力ファイル.csv)を開いて書き出す役割を持っています。

CSV ファイルに書き出す操作は独立しているので、そこだけは別のプロシージャにしておくと分かりやすいのです。

2、共通化したい部分を保存しておくと便利

いくつもの Excel シート内部の VBA コードで出てくる部分を共通化しておくのも良いと思います。

例えば、先の例では Transform_to_Csv プロシージャは calc プロシージャの中で呼び出しています。

私は、この Transform_to_Csv プロシージャを、様々な Excel シート内部の VBA コードで使うこので、Evernote に保存してあります。

Image(6)

そうすれば、使いたくなったときに Transform_to_Csv プロシージャをまるまるコピペできますので。

3、まとめ

Call ステートメントを使うことで、プロシージャを呼び出せます。

様々な VBA コードで共通して使いたい部分は Evernote やメモ帳に保存して起き、必要なときには独立したプロシージャとしてコピペして、Call ステートメントで呼び出すと良いでしょう。

編集後記

昨日(2/28)は確定申告業務から一時的に抜け出し、商工会議所青年部の関係で市役所へ。

色々と有意義な話が聞けました。

そして、商工会関係のことでも色々勉強しといた方がいいかもなぁ! って感じたこともありました。