- ベストアンサー
Access VBAのイベント共有について
- Access VBAのイベントを共有化する方法を学びたい。
- クラスモジュールについて基礎から勉強しなければならない。
- フォーム上のラベルの背景色をマウスカーソルが乗った時に変えるコードを効率的に実現したい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
とりあえずラベル2個だけ。Acc2010で試しています。 先日、帳票フォームのテキストボックスのクリックイベントを、テキストボックス名を決め打ちしないで汎用的に処理したいと悩みまくったところですので、若干のアドバイスをさせていただきます。ご参考まで。 ☆フォームモジュール Private MyLbl(2) As Class1 Private Sub Form_Load() Dim Lbl As Access.label Dim i As Integer For i = 1 To 2 Set Lbl = Me.Controls("Lbl" & i) Set MyLbl(i) = New Class1 Set MyLbl(i).label = Lbl Next End Sub ☆クラスモジュール 'Publicだとエラーになる '変数名がlabelだと、コントロール名と重なって変なエラーになると嫌なので変更 Private WithEvents myLabel As Access.label 'このプロパティのセット部が欠落-クラスモジュールの理解不足 Public Property Set label(newLabel As Access.label) Set myLabel = newLabel 'Accessではこれの設定が必要 - 先日はまったところです myLabel.OnMouseMove = "[Event Procedure]" End Property '引数がVBEで自動生成されるものと違っていた Private Sub myLabel_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) myLabel.BackColor = 225 End Sub
お礼
早速のご回答ありがとうございます!! mitarashi様のおっしゃる通りコードを記述したら、やりたいことができました! なるほど、プロパティのセットとは全然理解できておりませんでした。 "[Event Procedure]"の所も、全く理解できていませんが、どこかでそんな記事を見たような・・・という感じでした。 私にはやっぱりまだクラスを理解するには勉強が足りないと思いました。 大変勉強になりました! 今後もっとしっかり勉強します! 今回は本当にありがとうございました!! 助かりました。