• ベストアンサー

Access VBA標準モジュールについてです。

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>クラスモジュールについての本は沢山あって何とか理解できつつありますが そうですかね。 実情とかけ離れているように思いますが、勉強が足らんのかな。 クラス主義の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()と限定しただけ。

momo1023
質問者

お礼

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

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

クラスモジュールを使う場合は、コントロールのそのものに、インスタンスを割り当てますが、複数のコントロールのイベントに同様に割り当てることが可能になります。つまり、割り当ては一回で済みます。 標準モジュールを使うということは、複数のフォームなどで共通の関数プロシージャ等を使うということです。ただ、コントロールのイベント・プロシージャは、一対一の対応で書かなくてはなりません。標準モジュールは、各々に呼び出しを書かなくてはいけません。しかし、クラスモジュールのようにインスタンスの生成という考え方が必要ありませんから、分かりやすいです。 通常は、以下のように、関数プロシージャを呼び出します。 '//コマンドボタンのプロパティのイベントに設定します。 Private Sub cmdButton_Click()  Call MyFunc End Function '//標準モジュール Public Function MatchUp(CityName As String)   MsgBox Date End Function

momo1023
質問者

お礼

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

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2
momo1023
質問者

お礼

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

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

>標準モジュールを作動させたいのですが、 少し意味が判りづらいのですが、 標準モジュールに設定しているプロシージャを 呼び出すということですか。たとえば、 Function なんとか(abc As Integer) As Integer 処理 End Function のようなものをボタンのクリックイベント中で、 ABC = なんとか(123) のようにするといことですか?

momo1023
質問者

お礼

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

関連するQ&A

  • Accessのフォームとモジュールについて

    AccessVBA初心者です。 最近ツールを作り始めたのですが、フォームのファンクション(クリックなど)ごとの処理については例えば、フォームのボタンとかラジオボタンなどと結びつけてVBAを記述します。しかし、先輩などのツールを見るとモジュールにも記述している場合があるのですが、モジュールにはどういったことを記述して、どうフォーム側から呼び出すような仕組みなのでしょうか? 漠然とした質問で申し訳ございませんが、一般論でよいので教えてください。

  • VBA 標準モジュールとフォーム

    ある標準モジュール内で生成した変数の値をフォームのコマンドボタンをクリックしたら表示されるプログラムはどうやってつくるのですか? 標準モジュール sub test() dim a as integer dim b as integer dim sum as string a=5 b=1 sum=a+b End sub フォームのコマンドボタンクリック Sub CommandButton1_Click() MsgBox sum End Sub 標準モジュールで計算した答えがフォームのコマンドボタンをクリックしたら答え6が表示されるようにしたいのですが、どうしたらできますか?

  • アクセスで「モジュールがありません」となってしまいます

    ACCESS2000を使用しています。 メニュー用のフォームに、データ照会用のフォームを 呼び出すコマンドボタンを追加し、フォームビューに切り替え 試しにクリックしていみたら実行時えら'2001';となりました。 どうみても記述に間違いはないとおもわれるのですが、そうこう しているうちに」ほかのイベントプロシージャを設定してある コマンドボタンをクリックすると「モジュールがありません」 (こうなる前までは正常に動作していました)となって動作 しなかったり、照会用のフォームにいたってはデザインビューで も開かなくなってしまいました。 元に戻すことはできるでしょうか? 助けてください。

  • 標準モジュールについてなのですが

    すみません。教えてください(/_;)VB6にて理解できないことがあります。いくつものパスを標準モジュールに記述できると知り、早速見やすいプログラムにしようと思い、標準モジュールを追加しました。サンプルなどを調べ、Function Apath() as stringを理解しました。フォームの方にはpath = Apathって書いておけばいいと書かれていたのでその通りにしました。しかし、見に行ってはくれません(>_<)で、いろいろやってみてあることに気づきました。変数を宣言してたら、ダメでしてなかったらちゃんと見に行ってくれます。 Dim path as string,Dim Apath as string.Apathを消すと働いてくれます。宣言が間違っているのでしょうか?標準モジュールをこのような感じで利用するには何か重大なルールがあるのでしょうか?すいません、初心者すぎる質問で<(_ _)>しかし、聞かぬは一生の恥と思い質問しました(>_<)よろしくお願いいたします<(_ _)>

  • VBのフォームモジュールと標準モジュールの使い分け

    VBのフォームモジュールと標準モジュールの使い分けが今一つわかっていません。 フォームモジュールとは、フォーム(画面)上で起こったイベント(例えば、ボタンをクリックした時とか、ユーザーが行を選択したりだとか)の処理を、記述するところと解釈しています。 標準モジュールは、フォームが2つ以上あって、その2つが共通する処理(関数)などを、記述したり、フォームが1つでも、同じ処理を繰り返す場合、その処理を標準モジュールに書いたり・・・・という解釈をしています。 あってますでしょうか? フォームが一つしかない場合、もしくは2つあっても、あまり共通する処理がない場合、なんかは標準モジュールはあまり使わないのでしょうか? それとも、フォームが1つとかでも、今後のメンテの事など考慮して、標準モジュールを作ってそこにグローバル変数なんかで処理を書いた方がよいのでしょうか? どなたか、教えてくださいませんか? いろいろBBSなどで見てみるんですが、いろいろ書いてあって、どれが理想か わかりません。よろしくお願いいたします。

  • 標準モジュールとクラスモジュールの違い

    マイクロソフトのAccess2000でVBAプログラミングを行なっておりますが、 基本的なことを教えてください。 「標準モジュール」と「クラスモジュール」の違いはなんですか? 例えば、どこからでも使えるプロシージャ Public Function getSum( i1 as integer, i2 as interger ) getSum = i1 + i2 End Function を定義したとして、標準モジュール内に書くのとクラスモジュール内に 書くのとでは、何が違ってきますか?その他とにかく「標準モジュール」 とクラスモジュールの違いを教えてください。

  • クラスモジュールの使い方が詳しく書かれたVBAの本

    VBAを勉強中のものです。 クラスモジュールを使いこなせるようになりたいのですが それについてよく書かれている本はありますでしょうか? VBAの勉強している際に読む本は、標準モジュールにコードを記載するよう書かれています。 ご存知の方がいらっしゃいましたらご回答お願いします。

  • Access VBAで

    VBAの超初心者です。 Accessのフォームでコマンドボタンを押すと、決まった文字が入力できるフォームを作りたいと思っています。 クリック時のイベントプロシージャーはどのように記入すればよいのでしょうか。 ど素人な質問ですみません。

  • クラスモジュールを使わないとできないこと

    エクセル、アクセスでvbaを利用しています。 現在はすべて標準モジュールに記載しているのですが 「クラスモジュールを使わないとできないこと」もあるのでしょうか? クラスモジュールの使い方、必要性がいまいちわかりません。 まだ初心者な為複雑なコードは作っていません。 よろしくお願いします。

  • エクセルVBAで標準モジュールを保護したい

    エクセルのVBAマクロを使用したエクセルフィルがあります。 ユーザーは標準モジュールに記述した関数を使ってシートのマクロを変更してカストマイズできます。 ユーザーが標準モジュールを変更すると使用できなくなりますので、この標準モジュールだけをユーザーが変更できない、または見えないようにする方法をご教示いただけませんか。 よろしくお願いします。

専門家に質問してみよう