|
▼YU-TANG さん
ご丁寧にご教示頂き、ありがとうございます。
クラスという概念は、耳にしたことはありますが、かなり難しそうですね。
でも、すべてのラベル(42×6ヶ月分)にクリック時イベントを作成しなくてもよくなるということなんですね?
ちょっと時間がかかりますが、勉強してみます。
わからないところがありましたら、また質問させて頂きますので、よろしくお願いいたします。
>こんばんは、YU-TANG です。
>
>> というエラーがでます。
>> Private Sub d14_Click(ByRef avarData())
>
>これ、ラベルですよね。
>ラベルのクリック時イベントに avarData という引数はありません。
>勝手に追加しても、認識してくれるわけではありません。
>
>直接の回答にはなっていないと思いますが、こういう場合は
>WithEvents とクラスで実装するのが定石です。
>
>まずクラスモジュールを挿入して、以下のように記述します。
>
>Option Compare Database
>Option Explicit
>
>Private WithEvents lbl As Access.Label
>
>Private Sub Class_Terminate()
> Set lbl = Nothing
>End Sub
>
>Public Property Set Label(ByVal vNewValue As Access.Label)
> Set lbl = vNewValue
> lbl.OnClick = "[Event Procedure]"
>End Property
>
>Private Sub lbl_Click()
> Screen.ActiveControl.Value = lbl.Tag
>End Sub
>
>クラスモジュール名は任意ですが、とりあえずここでは「clsDateLabel」
>という名前を付けたと仮定します。
>
>次に、フォームの(クラス)モジュール先頭で次のように宣言。
>
>Option Compare Database
>Option Explicit
>
>Dim dic As Object ' クラス保持用 Dictionary オブジェクト
>
>Private Sub Form_Close()
> Set dic = Nothing
>End Sub
>
>最後に、Form_Load() のループ中で次のように初期化します。
>
>> Me(tsuki(j) & i).Caption = Day(p)
>Me(tsuki(j) & i).Tag = p
>Set dic(tsuki(j) & i) = New clsDateLabel ' インスタンス作成
>Set dic(tsuki(j) & i).Label = Me(tsuki(j) & i)
>
>これで、ラベルのクリック時イベントプロシージャを個別に
>作成しなくても、クラスが勝手に処理してくれるはずです。
>
>それでは。
|
|