- ベストアンサー
フォームモジュール内に サブプロシージャー
vbaでフォームモジュール内に Sub test() End Sub のように、サブプロシージャーを作るのはよくないですか? そのフォームモジュールに関係のあるサブプロシージャーの場合です。 サブプロシージャーは標準モジュールに作った方が良いのか、 わからないので教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 > vbaでフォームモジュール内に......サブプロシージャーを作るのはよくないですか? > そのフォームモジュールに関係のあるサブプロシージャーの場合です。 例えば、専らユーザーフォームモジュールから呼び出し、 主にユーザーフォームに関する処理をするプロシージャであれば、 SubであれFunctionであれ、ユーザーフォームモジュールに書く方が、 一般的ですし、全体的に整理された解り易い構造になります。 いちいちUserform1.Label1などと書かなくても、 ユーザーフォームモジュールではMe.Label1とかLabel1とか書けますよね。 例えば、ユーザーフォームモジュールから呼び出すけれど、 専らSheet1を処理するような内容であれば、 Sub test()をSheet1モジュールに書いておいて、 Call Sheet1.test のように呼び出したりします。 いちいちSheets("Sheet1").Range("A1")などと書かなくても、 Sheet1モジュールではRange("A1")と書けますよね。 つまり、処理するクラス(対象)によって、 それぞれの処理対象のクラスに書く、という風に考えると判り易いかと思います。 VBAでは、標準モジュール以外のモジュールはすべて、 クラスを扱うモジュール(≒特定のオブジェクトを扱う為のモジュール)です。 多彩なオブジェクトを扱う処理なら基本的には標準モジュール、 複数のモジュールから呼び出して、同様の処理をするなら標準モジュール、 フォームコンントロール等への登録を含め、所謂マクロとして扱うなら標準モジュール、 みたいなことは言えますけれども、、、。 もう一つ、あちらこちらで目にするサンプルコードや質問掲示板で書かれた回答コード等では、 特に指示が無い限りは、標準モジュールでの動作を前提にしたコードです。 > vbaでフォームモジュール内に......サブプロシージャーを作るのはよくないですか? > そのフォームモジュールに関係のあるサブプロシージャーの場合です。 「よくない」と言われるようなものではないですから、そういう意味では安心してください。 どのモジュールに書くべきなのか、普段から意識しておいた方が好いとは思います。 以上、ご参考まで。
お礼
ご回答ありがとうございます。