• ベストアンサー

フォームモジュール内に サブプロシージャー

vbaでフォームモジュール内に Sub test() End Sub のように、サブプロシージャーを作るのはよくないですか? そのフォームモジュールに関係のあるサブプロシージャーの場合です。 サブプロシージャーは標準モジュールに作った方が良いのか、 わからないので教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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でフォームモジュール内に......サブプロシージャーを作るのはよくないですか? > そのフォームモジュールに関係のあるサブプロシージャーの場合です。 「よくない」と言われるようなものではないですから、そういう意味では安心してください。 どのモジュールに書くべきなのか、普段から意識しておいた方が好いとは思います。 以上、ご参考まで。

dwkxnhnrjsr
質問者

お礼

ご回答ありがとうございます。

関連するQ&A

専門家に質問してみよう