2016年6月12日日曜日

【VBAリファレンス】プロシージャってなんでしょう。Callステートメントで呼び出すやつです。

VBAコードを記述を行う時はVBE(Visual Basic Editor)に行います。
VBEを表示させるには
Excelの画面のリボンの【開発】からVisual Basicをクリックし
挿入よりモジュールをクリックするとエディターが起動します。

そこにぱちぱち入力していくのです。
























もし、【開発】のタブがない場合は、
スタートメニュー、オプション、リボンのユーザー設定で開くと
リボンの設定画面が開くので
開発のところにチェックを入れて下さい。


さて、表題の件ですが
マクロの記述をしたあと、そのコードを確認しに行くと
コードが書かれています。
マクロの記述を行った場合、自動的に
【プロシージャ】というものが作成され、そこにコードが記載されます。

その時、何も設定しない場合Macro1という名前で登録されるのですが、
その名称をプロシージャ名といいます。
つまり、1括りの記述の集まりをプロシージャといいます。

基本形ですが、1つのプロシージャは
SubからEnd Subまでの間に処理内容を記述します。

そして、モジュールの中には
複数のプロシージャを記述することが可能です。
























複雑な処理を行う場合、
どうしても記述するコードが長くなります。
もちろん、全体把握がしっかり出来ている頭のいい方であれば
1つのプロシージャに全ての処理内容を記述してもかまいません。


でも、私のようなポンコツおじさんは限界があります。

そんな時は、全体処理を部分化させて全体把握をしやすくします。
つまり、プロシージャごとに処理内容を分けて記述します。

しかし、そんなことをすると、
全処理を実行するにはプロシージャ1つ1つを実行しなければなりません。


それはそれで面倒です。


そんな時は、Callステートメントを使います。

Callステートメントは
あるプロシージャ内で、別のプロシージャ(つまり別の処理)を
呼び出すことができます。

記述の仕方は
Call プロシージャ名
だけです。

サンプル画像





































サンプル画像のVBE内、一番上のプロシージャがメインプロシージャで
以降は具体的な処理を記述したプロシージャです。

一番最初の全処理工程を記述のプロシージャを実行すると
2番目から4番目までのプロシージャが順番に実行されます。

さらにサンプル画像2





































このCallステートメントを使用することで
全体を把握しやすくなったり、
各パーツごとでデータを実行したりと、
後々編集もしやすくなりますし、エラーが発生した場合でも
メンテナンスがしやすくなります。

VBAの記述量が少ないうちは
あまり使用することはないですが、
多くの処理内容があるコードを記述する場合は
こまめにプロシージャを分けることをおすすめします。


0 件のコメント:

コメントを投稿