• ベストアンサー

コントロールの作成時にイベント処理を追加したい

Access2007のプログラム内で、CreateControlでコントロールを作成し、さらにクリックイベントを付けることは可能でしょうか? プログラム内の特定ファンクションを実行するクリックイベントを追加したいのですが。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

バフッとした例で良いですか。 テスト用の環境で、標準モジュールに以下を記述します。 (コピー、貼り付けでも) Public Function lblClick(iNum As Long)   MsgBox "Click : " & iNum End Function Public Sub Sample1()   Dim i As Long   With CreateForm     For i = 1 To 5       With CreateControl(.Name, acLabel, acDetail, , , _             567, 567 * i, 567 * 3, Int(567 * 0.5))         .Name = "lblBox" & i         .Caption = "lblBox" & i         .OnClick = "=lblClick(" & i & ")"       End With     Next   End With End Sub 上記 Sample1 を実行すると、 新規フォームにラベル5つがデザインモードで表示されているかと思います。 フォームビューにしてフォームを表示し、各ラベルをクリックしてみます。 クリックするとメッセージボックスが表示されます。 参考になる/ならない等、自己責任でお願いします。

amamaq
質問者

お礼

30246kikuさん お返事どうもありがとうございました。 OnClick もここで記述できたのですね、大変助かりました。

関連するQ&A

  • 不特定多数のコントロールを発生させる方法

    VBAなんですが、最悪VBでも構いません。 コーディングにより、Access中のレコードの数だけ、ラベルやコマンドボタンをフォーム上に作成したいのですが、どうすればいいのかわかりません。 レコードの数なので多数になる可能性が高いので、配列にしようと思っているのですが、コマンドボタンも含まれているため、そのクリックイベントも作らなければならないのです。(イベント内容は同じ。違いはインデックス番号の認識のみ) しかもVBAだとコントロールの配列が作れないので困っています。どうすればいいでしょうか? コントロールの追加にcreatecontrol関数を使うとフォーム名にcreateformを使わないといけないらしく、フォームを新しく作らないといけないみたいでイベントまでは埋め込めそうにありません(既存のフォーム名でするとデザインがどうとかこうとかでエラーが出ます)

  • VB2008でユーザーコントロールのイベントについて

    VB2008でユーザーコントロールのイベントについて 作成したユーザーコントロールを(1)フォームに配置した時のみ実行される (2)フォームを実行した時のみ実行される それぞれ処理を分けたいのですが、適切なイベントが見つかりません。 何か区分けのできる方法はあるのでしょうか? 何方か教えていただけませんか

  • VBAでのコントロールイベント処理

    VBAで画面を作成しています。 「form1」からボタンを押下することで「form2」がモーダルで表示される仕様です。 「form2」からListのコントロールをダブルクリックすることで 「form2」は閉じ、「form1」に選択した内容を表示するという仕様です。 その場合、「form1」の別のイベントがなぜか走ってしまいます。 どのような処理をおこなえば、「form1」のイベントが発生しないようなるでしょうか??

  • AccessVBA全てのコントロールのイベントを取得したいです。

    AccessVBA全てのコントロールのイベントを取得したいです。 フォーム上にコントロールが20個ほどあります。 現在は抽出ボタンを使用し、抽出実行イベントを行っています。 出来れば、すべてのAfterUpdate()で抽出実行させたいのですが、 コードの書き方がわかりません。 全てのコントロールに対しAfterUpdate()のイベントを書くしか方法はないでしょうか? フォーム内どのコントロールでも抽出実行Functionさせたいです。 ExcelVBAの様にシート内の全てのChangeイベントの様な取得方法はないものでしょうか? ご存じの方がおられましたら、アドバイスよろしくお願いいたします。 m(_ _)m

  • イベントハンドラに処理を追加するには?

    例えばbodyタグのonloadイベントハンドラに JavaScriptを使って処理を追加するにはどうすればよいのでしょうか? 例) ・rei.htm <html>  <script language="JavaScript" type="text/javascript">  function hoge(){   alert("hogeです");  }  function foo(){   alert("fooです");  }  </script>  <body onload="hoge();">  </body>  <script language="JavaScript" type="text/javascript">  document.body.onload += foo();  </script> <html> ※前提条件として、変更可能な箇所はscriptタグ内のみとなります。 「こんなんでいけないかな?」と思って上記のようにやってみたのですがうまくいきませんでした。 (結果はfoo()のみ実行され、hoge()は実行されませんでした。 alertでbody.onloadの中身を確認すると『function anonymous{hoge();}undefined』と表示されるので、なぜfoo()が実行されてhoge()が実行されないのかよくわかりませんが‥) また試しに document.body.onload += foo(); これを以下のように変更してみました。 document.body.onload = foo(); この時は、 ・foo()の実行  ↓ ・javascriptエラー  ↓ ・hoge()の実行 となりました。(これもなぜこうなるのかよくわかりせん) 以上、イベントハンドラに最初から任意に入れられている処理を残しつつ、 さらに処理を加えるにはどうすればよいのかご教示お願いします。

  • DateTimePickerにイベント追加したい

    VB.net2008で開発しています。 DateTimePickerを画面に貼り付けて使用しているのですがイベントにダブルクリックがありません。 画面に配置したコントロールにイベントを追加することってできますか? ご教授のほどよろしくお願い致します。

  • WebBrowserコントロールを追加したい

    アクセス2007でツールボックスにWebBrowserコントロールを追加したいので http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9195.html を見たのですが、 2. 追加するための操作方法  (1) VBE画面の[ツール]メニュー [その他のコントロール]をクリック  (2) [Microsoft Web Browser]をチェックして [OK]ボタンをクリック と記載されてますが、VBE画面に [その他のコントロール]がありません。 2007ではどうやって、WebBrowserコントロールを追加すればいいでしょうか?

  • Access2003のイベント

    Access入門者です Acceessでのイベント発生が分かりません Mainフォームにサブフォームを2つ配置 (Sub_A、Sub_B) MainフォームにSub_Aの連結コントロールを作成してあります。 この連結コントロールの値でSub_Bを再クエリするシステムを作成しています。 Sub_Aでフィールドを選択するごとに連結コントロールの値は変化しますが、連結コントロールは変更又は更新イベントは発生しません。(その他のイベントも試しました) 仕方なく、連結コントロールのクリックイベントを利用して再クエリを実行しています。 Sub_Aで選択 → Sub_Bを再クエリする良い方法はありますか?

  • カスタムコントロール(ユーザーコントロール)について

    こんにちわ。 例えば、Visual Basic.NETにて、 カスタムコントロール1、カスタムコントロール2・・・etcと、幾つかのカスタムコントロールを作成しておいて、 プログラムの実行時に、フォーム上に配置されたボタン1をクリックすると、フォームにカスタムコントロール1が継承されて配置される、 と言った内容のプログラムを作成したいと考えています。 とはいえ、そのようなことが実際に可能なのかどうかもわかりませんし、そもそもカスタムコントロールの作成方法も理解していません。 そこで、カスタムコントロールの作成からその利用に至るまでを易しく解説してくれているような書籍等がございましたら、教えていただけないでしょうか? よろしくお願いいたします。

  • ラインコントロールにクリックイベント

    ラインコントロールにイベントが発生しないことは分かっています。 なので、自作しないといけないのかなと思っていますが、良い方法が見つかりません。クリックイベントが発生するようなラインのユーザーコントロールの作り方を教えていただけませんか? あるいは、フォームのクリックイベントで、そこがラインコントロール上か否かという判断をさせる方法でもいいです。 よろしくお願いします。

専門家に質問してみよう