VBのフォームモジュールと標準モジュールの使い分けが今一つわかっていません。
フォームモジュールとは、フォーム(画面)上で起こったイベント(例えば、ボタンをクリックした時とか、ユーザーが行を選択したりだとか)の処理を、記述するところと解釈しています。
標準モジュールは、フォームが2つ以上あって、その2つが共通する処理(関数)などを、記述したり、フォームが1つでも、同じ処理を繰り返す場合、その処理を標準モジュールに書いたり・・・・という解釈をしています。
あってますでしょうか?
フォームが一つしかない場合、もしくは2つあっても、あまり共通する処理がない場合、なんかは標準モジュールはあまり使わないのでしょうか?
それとも、フォームが1つとかでも、今後のメンテの事など考慮して、標準モジュールを作ってそこにグローバル変数なんかで処理を書いた方がよいのでしょうか?
どなたか、教えてくださいませんか?
いろいろBBSなどで見てみるんですが、いろいろ書いてあって、どれが理想か
わかりません。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
>標準モジュールは、フォームが2つ以上あって、その2つが共通する処理(関数)などを、記述したり
で良いと思いますよ。
逆に
>フォームが1つでも、同じ処理を繰り返す場合
は、フォームモジュールの中に関数を作ってしまうので良いのでは?
参考になるかわかりませんが、私はDBとの接続や、起動時の全フォームのロード、定数やプロジェクトレベルでのグローバル変数の宣言等に使用しています。
そういえばMain関数は標準モジュールにしか書けませんでした…っけ?
メッセージボックスを表示する際の関数を自分で定数とMsgBox()を組み合わせて使い勝手の良い物にする…というのもよくやります。
この回答への補足
早々のレス大変うれしく思います。
質問なのですが、、、すみません。。
DBはオラクルを使用していて、フレキシブルグリッドというオブジェクトに、フォーム上のボタンを押した際に取得したデータを表示しているんですが、
そのボタンも2種類あり、それぞれ取得するデータも違うのですが、半分くらいは
2つとも同じデータを取得するんです。
この場合は、オラクルへ接続と、同じデータを取得する部分は標準モジュールに書いた方がよいのでしょうか?
現時点では、オラクルへの接続だけを標準モジュールに書いて、2つのボタンのイベントはそのままフォームモジュールに書いています。
なので同じデータを取得するところは2つ書いてしまってて。。
これってあんまりよくないのかな???っと。。。。
すみません、。こんな初歩的な質問で・・・・。
よろしくお願いいたします。
No.3
- 回答日時:
私の個人的趣味では
標準モジュールはグローバルな定数定義と共通関数で使います。
グローバル変数は、標準モジュールは書きません
とゆうか 使いません。
共通で使用する変数はクラスモジュールのプロパティにすます。
No.2
- 回答日時:
フォームモジュール内の関数には、密かにどのフォームから呼ばれたかを識別する引数が余分に渡されているので、使わない場合はオーバーヘッドがあります。
フォームモジュール内には、そのフォーム自身にアクセスすることのない関数は書かないほうがいいです。
Form1ってのはじつは、複数作ることができます。
そのときモジュールからForm1.Captionという書き方をすると、特定の1つにしかアクセスできません。
まぁ、今分からないなら、区別する必要もないってことです。
必要なときが来たら自然と分かると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
標準モジュールからフォームをコントロールしたい
Visual Basic(VBA)
-
他のモジュールのプロシージャの呼び出したい。
Visual Basic(VBA)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
-
4
CloseとDisposeの違い
Visual Basic(VBA)
-
5
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
6
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
7
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
8
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
9
モジュールとクラスの違いってなんなんですか?
Visual Basic(VBA)
-
10
ACCESSでクエリを作成したら「式が複雑すぎます。」の表記が…
その他(データベース)
-
11
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
12
UserForm1.Showでエラーになります。
工学
-
13
DoEventsがやはり分からない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba userFormのSubを標準モジュ...
-
Excel VBA 標準モジュール内で...
-
Excel VBAでリンク切れをチェッ...
-
VBAで別モジュールへの変数の受...
-
押されたキーにてポップアップ...
-
「変数が定義されていません」...
-
グラフのX,Y座標を取得したい
-
Excel VBAで、ユーザーフォーム...
-
FreeBSDでperlモジュールをイン...
-
VBAで旧字体を異字体に一括で変...
-
モジュールの最大数はいくつな...
-
マクロについて教えてください。
-
vba 標準モジュールインポート...
-
VBでグローバル変数を宣言するには
-
SendKeysの使い方について
-
エクセル2016VBEのプロジェクト...
-
標準モジュールを削除したい。(...
-
VBA モジュールで共通に使う変...
-
標準モジュールとクラスモジュ...
-
ExcelVBA:パブリック オブジェ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
VBでグローバル変数を宣言するには
-
Excel VBAで、ユーザーフォーム...
-
VBAで旧字体を異字体に一括で変...
-
ユーザー定義関数に#NAME?が返...
-
VBA This Workbookモジュール...
-
Excel VBA 『Call』で呼び出す...
-
【vba】フォームに書いてあ...
-
Access VBA標準モジュールにつ...
-
モジュールの最大数はいくつな...
-
'Range'メソッドは失敗しました
-
vba userFormのSubを標準モジュ...
-
VBAで別モジュールへの変数の受...
-
グラフのX,Y座標を取得したい
-
標準モジュールを削除したい。(...
-
VBAProjectのモジュ...
-
ExcelVBA:パブリック オブジェ...
-
Excel VBA 標準モジュール内で...
-
acwzlibとは?
おすすめ情報