質問: Nothing End Sub --- 求める結果 ボタン「b0」クリック → メッセージボックス「0」を表示 ボタン「b1」クリック → メッセージボックス「1」を表示 (以下略) 現状 何もおこりません。(エラー表示もなし) 心優しい方がいらっしゃいましたら教えて下さい。 よろしくお願いします。
回答: 参考にされているサイトはVB6についての記述のようですね。 AccessのフォームはMSForms.Formではなく、Access.Formとなり、VB6やExcelのフォームとは別物です。 そして、色々と試してみましたが、イベントをフックすることはできませんでした。 さて、私の結論は「できない」なのですが、一応、色々と間違ってそうなところをお伝えします。 まず、AccessのコマンドボタンはMSForms.CommandButtonとは別なので、Access.CommandButtonと書く必要があります。 次に、Form_inisialyzはスペルミスかと思いますが、もともとアクセスフォームにInitializeイベントやTerminateイベントはありません。書くならLoadイベント、Unloadイベントです。 次に、Terminateイベントに書いているSet NumBtn = Nothingですが、NumBtnは配列かと思いますので、個別にNothingするか「Erase NumBtn」とする必要があります。 最後に、NumBtn(i).MyItem Controls("b" & i) はプロパティへの値セットなので、イコールで代入する必要があります。さらにオブジェクト型プロパティなので、Setが必要です。 **Set NumBtn(i).MyItem = Controls("b" & i)** しかし、全部直しても、やはり動作しませんでした。 **【代替案】** 次のマクロを用意して、 ``` Private Sub ButtonClick(ByRef Num As Integer) MsgBox "ボタン" & Num & "が押されました。" End Sub ``` 個別のボタンクリックマクロから呼び出します。 ``` Private Sub b0_Click() Call ButtonClick(0) End Sub ``` 個別のマクロをいちいち手で書くのが面倒なら、標準モジュールに次のコードを用意し、マクロにコードを書かせます。 ``` Sub PrintButtonEvents() For i = 0 To 9 Debug.Print "Private Sub b" & i & "_Click()" Debug.Print Space(4) & "Call ButtonClick(" & i & ")" Debug.Print "End Sub" Next End Sub ``` 実行するとイミディエイトウインドウにマクロが出力されるので、それを張り付けてください。