AccessVBA全てのコントロールのイベントを取得する方法とは?

このQ&Aのポイント
  • 現在のフォーム上にはコントロールが20個ほどありますが、すべてのコントロールのイベントを取得する方法を知りたいです。抽出実行イベントをAfterUpdate()で行いたいと考えていますが、コードの書き方がわかりません。
  • ExcelVBAでシート内の全てのChangeイベントを取得する方法がありますが、AccessVBAで同様の方法があるのか知りたいです。フォーム内のどのコントロールでも抽出実行させたいです。
  • AccessVBAで全てのコントロールのイベントを一括で取得する方法について教えてください。フォーム上にあるコントロールすべてに対し、AfterUpdate()イベントを書くしか方法はないのでしょうか?
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

検索サイトで、キーワード「擬似コントロール配列」にて検索。 もしくは 全てのコントロールのAfterUpdate()から、別の共通プロシージャを呼び出す。

関連するQ&A

  • ユーザコントロールのイベント取得について(C#)

    環境:Visual Studio 2005 C# Windows Application フォームに自作のユーザコントロールを貼り付けてそのイベントを取得する勉強をしているものです。 フォームでのユーザコントロールイベントを取得して処理をする方法が分かりません。 状況 ユーザコントロールにはテキストボックスを追加しています。 また、フォームにそのユーザコントロールを追加しています。 確認したいことは、ユーザコントロールのテキストボックスになにか値を入力したタイミングでチェンジイベントをフォーム側で察知し、処理をするというものです。 どなたか、要点だけでもいいので教えていただけないでしょうか? 宜しくお願いいたします。

  • エクセル フォーム上の全てのコントロールを取得した

    エクセル フォーム上の全てのコントロールを取得したい http://okwave.jp/qa/q4879853.html のNo.1さんの回答を参考に、 Sub try() Dim i As Integer Dim StrFormName As String StrFormName = "フォーム1" For i = 0 To Forms(StrFormName).Controls.Count - 1 Debug.Print Forms(StrFormName).Controls.Item(i).Name Next End Sub を作ったのですが、 「Forms」の部分が、 「Sub、Function、または Property が定義されていません。(Error 35)」 というコンパイルエラーになってしまいます。 上記のコードをアクセスVBAにつけると、全てのコントロール名が取得できます。 同じようにエクセルで使うにはどこを修正すればいいでしょうか? フォーム名は、変数に入れて使いたいです。

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

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

  • イミディエイトウインドウでイベントプロシージャーを

    イミディエイトウインドウでイベントプロシージャーを実行させる方法は? 標準モジュールのサブプロシージャなら イミディエイトウインドウで 「test1」+エンターでコードが実行されますが フォームのイベントプロシージャーを同じように 「リスト0_AfterUpdate」+エンター すると、コンパイルエラーになります。 イミディエイトウインドウでイベントプロシージャーを実行する方法を教えてください

  • .Net ユーザーコントロールのイベント

    質問させていただきます。 環境はVB.NET2003 WindowsXPです。 あるユーザーコントロール(Form)にボタンが用意されており、そのユーザーコントロールを別のフォームAに貼り付けたとします。 この時、Aのコード内でユーザーコントロール上のボタンのClickイベントを取得する方法がございましたら、回答をよろしくお願いします。

  • エクセル:イベントが書かれたシート名を取得したい

    シート[Sheet1]に値が入力された時、  (1)その入力された値(というか"Target")  (2)Targetが入力されたシート名 を持って、SheetInputというプロシージャへ飛ぶ、というコードをSheet1に書きました。 (シートを右クリックして「コードの表示」を選択して出てくるところに) Private Sub Worksheet_Change(ByVal Target As Range) Dim SName As String SName = ActiveSheet.name SheetInput Target, SName  '(1)Target、(2)SName End Sub 「シート[Sheet1]に値が入力された時」に動き出すイベントなのだから、 (2)は必ず「Sheet1」ですが、シート名が変わってもこのコードをそのまま使えるように、 SName = ActiveSheet.name と書いていました。 しかし、 別のマクロ上で「Sheet1に値を書き込む」と書いた結果としてこのSheet1のWorksheet_Changeイベントが動いた場合は、 SNameが「Sheet1」にならないことがあります。 それでもSName = "Sheet1"とは書きたくなく、 かつ、常に「このWorksheet_Changeイベントが書かれているシート名」を変数SNameに取得したいのですが、 このイベントが書かれているシート名を取得する関数はあるのでしょうか。 (伝わりますでしょうか?)

  • 全てのコンボボックスに同じchangeイベント

    VBA初心者です。お知恵を貸してください。 UserForm上にある全てのコンボボックス(1つを除く)に同じchangeイベントを適応させたいです。 【動き】 1.UserForm起動 2.フォーム上のSheetComboBoxからシートを選択 3.選択したシートを参照し、フォーム上にシートにある行数分ComboBoxi(変数)_1〜3、TextBoxi(変数)を作成。ComboBoxにシートの値を参照した「文字列 数値」をセット。TextBoxは空欄。 4.ComboBoxi_1〜3が変更されるごとに、TextBoxiにComboBoxの内容の数値部分を計上する。 5.登録ボタンをクリックしてComboBoxi_1〜3の内容をシートの特定列に転記。 3までは作成することができましたが、4で行き詰まってしまいました。 コンボボックスのコントロール名は動的なので、どのようにchangeイベントを書けばいいのか、また、コンボボックスの量が多い(1行3つ*行数分)ので、すべてに対して書かなければならないのか…ということです。 何か一括でchangeできるような方法をご存知の方は教えていただけないでしょうか。どうぞよろしくお願いいたします。

  • テキストボックスに値を入力し終わったらイベントを発

    エクセル2007を使用しています。 アクセスで言う「更新後処理」のAfterUpdateイベントは エクセルのActiveXコントロールのテキストボックスイベントにはないのでしょうか? 例えば、テキストボックスに「aiu」と入力し終わったらイベントを発生させたいのですが、 Private Sub TextBox1_Change() MsgBox "" End Sub にしすると 「a」を入力した時点で、MsgBox が表示されてしまいます。 テキストボックスに値を入力し終わったらイベントを発生させる方法はありますか? VBE画面でシートイベントを見ても AfterUpdateイベントは見当たりません。 ご回答よろしくお願いします。

  • VBA ユーザーフォームのChangeイベントを停止したい

    ユーザーフォームのChangeイベントは Application.EnableEvents = Falseで停止できないのですか? シート上のChangeイベントの停止はできましたが、ユーザーフォーム上のテキストボックス等のChangeイベントは停止できませんでした。 ユーザーフォームのChangeイベントを停止する方法があれば教えてください。

  • フォーム上の全てのコントロールを取得したい

    フォーム上の全てのコントロールを取得したいです。 (サブフォームも含め) 自分なりにVBAで考えてみたのがこれです。 Sub test() Dim 数 As Long For Each 数 In Form_フォーム1.Controls.Count ’Debug.Print ? End If Next End Sub でもこれだけでもデバックしてみると 「コンハ゜イルエラー for Eachは、コレクション オブジェクトまたは配列でのみ繰り返しを実行します。」 となります。 答えを教えてください! よろしくお願いします。 (アクセス2003です)