- ベストアンサー
Access VBA標準モジュールについてです。
Access VBA標準モジュールについてです。 現在、仕事上必要にかられAccessVBAを勉強中の初心者です。初歩的な質問で申し訳ありませんが、ご存知の方教えて下さい。 フォーム上のコマンドボタンを押した時に標準モジュールを作動させたいのですが、そんな方法はありますか?【クラスモジュールについての本は沢山あって何とか理解できつつありますが、標準モジュールに関しての記述があまり無い気がします。】 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>クラスモジュールについての本は沢山あって何とか理解できつつありますが そうですかね。 実情とかけ離れているように思いますが、勉強が足らんのかな。 クラス主義のVB.Netと違いますよね。 普通はAccessVBAでもエクセルVBAでも、標準モジュールにコードを書きますが。 クラスモジュールなど高等すぎて。もっとほかにAccessVBAで勉強することが多いのでね。 フォームのコマンドボタンを押したときのコードは、フォームのコントロールをデザインしている画面ででそのコマンドボタンをダブルクリックすると、プロパティほかの項目の、設定場面が出て、そのイベントの「クリック時」の右端の「・・・」をクリクすると Private Sub コマンド2_Click() End Sub が自動的に現れる。 この間にクリックしたときの処理のコードを直接書くのだが、他のコントロールからも利用したいときや そっくり標準モジュールに書きたいとき、(ユーザー)関数は、標準モジュールのModule1などに Sub test08() MsgBox "sss" End Sub と書いて Private Sub コマンド2_Click() module1.test03() End Sub と書くとボタン2をクリックしたとき「sss」のメッセージボックスが表示される(された). 他のModuleにもTest03はあるので、module1.test03()と限定しただけ。
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
クラスモジュールを使う場合は、コントロールのそのものに、インスタンスを割り当てますが、複数のコントロールのイベントに同様に割り当てることが可能になります。つまり、割り当ては一回で済みます。 標準モジュールを使うということは、複数のフォームなどで共通の関数プロシージャ等を使うということです。ただ、コントロールのイベント・プロシージャは、一対一の対応で書かなくてはなりません。標準モジュールは、各々に呼び出しを書かなくてはいけません。しかし、クラスモジュールのようにインスタンスの生成という考え方が必要ありませんから、分かりやすいです。 通常は、以下のように、関数プロシージャを呼び出します。 '//コマンドボタンのプロパティのイベントに設定します。 Private Sub cmdButton_Click() Call MyFunc End Function '//標準モジュール Public Function MatchUp(CityName As String) MsgBox Date End Function
お礼
お礼が遅くなりましてすみませんでした。私の初歩的な質問に対し、丁寧にご回答下さいまして有り難うございました。
- piroin654
- ベストアンサー率75% (692/917)
標準モジュールの解説はWEB上にたくさんあります。 以下はその一部です。 http://office.microsoft.com/ja-jp/access-help/HA010064450.aspx http://office.microsoft.com/ja-jp/access-help/HP005186814.aspx http://www.accessclub.jp/bbs3/0260/superbeg81190.html
お礼
お礼が遅れましてすみませんでした。私の初歩的な質問に対し、ご回答下さいまして有り難うございます。教えて下さいました解説を参考にし、もっと勉強します。有り難うございました。
- piroin654
- ベストアンサー率75% (692/917)
>標準モジュールを作動させたいのですが、 少し意味が判りづらいのですが、 標準モジュールに設定しているプロシージャを 呼び出すということですか。たとえば、 Function なんとか(abc As Integer) As Integer 処理 End Function のようなものをボタンのクリックイベント中で、 ABC = なんとか(123) のようにするといことですか?
お礼
お礼が遅くなりましてすみませんでした。私の初歩的な質問に対しご丁寧に回答下さいまして有り難うございました。
お礼
お礼が遅くなり申し訳ありませんでした。私の初歩的な質問にご回答下さいまして有り難うございました。