【iOS版アプリ】不具合のお知らせ

Access VBA標準モジュールについてです。
現在、仕事上必要にかられAccessVBAを勉強中の初心者です。初歩的な質問で申し訳ありませんが、ご存知の方教えて下さい。
フォーム上のコマンドボタンを押した時に標準モジュールを作動させたいのですが、そんな方法はありますか?【クラスモジュールについての本は沢山あって何とか理解できつつありますが、標準モジュールに関しての記述があまり無い気がします。】
宜しくお願いします。

gooドクター

A 回答 (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()と限定しただけ。
    • good
    • 2
この回答へのお礼

お礼が遅くなり申し訳ありませんでした。私の初歩的な質問にご回答下さいまして有り難うございました。

お礼日時:2010/06/19 11:22

クラスモジュールを使う場合は、コントロールのそのものに、インスタンスを割り当てますが、複数のコントロールのイベントに同様に割り当てることが可能になります。

つまり、割り当ては一回で済みます。

標準モジュールを使うということは、複数のフォームなどで共通の関数プロシージャ等を使うということです。ただ、コントロールのイベント・プロシージャは、一対一の対応で書かなくてはなりません。標準モジュールは、各々に呼び出しを書かなくてはいけません。しかし、クラスモジュールのようにインスタンスの生成という考え方が必要ありませんから、分かりやすいです。

通常は、以下のように、関数プロシージャを呼び出します。

'//コマンドボタンのプロパティのイベントに設定します。
Private Sub cmdButton_Click()
 Call MyFunc
End Function

'//標準モジュール
Public Function MatchUp(CityName As String)
  MsgBox Date
End Function
    • good
    • 0
この回答へのお礼

お礼が遅くなりましてすみませんでした。私の初歩的な質問に対し、丁寧にご回答下さいまして有り難うございました。

お礼日時:2010/06/19 11:25

標準モジュールの解説はWEB上にたくさんあります。


以下はその一部です。

http://office.microsoft.com/ja-jp/access-help/HA …
http://office.microsoft.com/ja-jp/access-help/HP …
http://www.accessclub.jp/bbs3/0260/superbeg81190 …
    • good
    • 0
この回答へのお礼

お礼が遅れましてすみませんでした。私の初歩的な質問に対し、ご回答下さいまして有り難うございます。教えて下さいました解説を参考にし、もっと勉強します。有り難うございました。

お礼日時:2010/06/19 11:20

>標準モジュールを作動させたいのですが、



少し意味が判りづらいのですが、
標準モジュールに設定しているプロシージャを
呼び出すということですか。たとえば、

Function なんとか(abc As Integer) As Integer
処理
End Function

のようなものをボタンのクリックイベント中で、

ABC = なんとか(123)

のようにするといことですか?
    • good
    • 0
この回答へのお礼

お礼が遅くなりましてすみませんでした。私の初歩的な質問に対しご丁寧に回答下さいまして有り難うございました。

お礼日時:2010/06/19 11:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング