ich habe im Forum einen Artikel gefunden (dynamische Button Click-Event vom 07.09.2009) der mir sehr hilft, bei dem ich jedoch noch ein Verständnisproblem habe. Ich hoffe Ihr könnt es auch mir begreiflich machen.
Es geht darum, controls dynamisch zur Laufzeit anzulegen und die Events über eine eigene Klasse abzufangen. Hier der Code aus dem Forum:
Im Klassenmodul cls_Test:
Option Explicit
Public WithEvents myCmd As MSForms.CommandButton
Private Sub myCmd_Click()
MsgBox (myCmd.Name & " gedrückt")
End Sub
Und in die Userform:
Option Explicit
Dim myColl As New Collection
Private Sub UserForm_Initialize()
Dim myClass As cls_Test
Set myClass = New cls_Test
Set myClass.myCmd = Me.Controls.Add("Forms.CommandButton.1", "cmd_Test" & 2, True)
With myClass.myCmd
.Left = 336
.Height = 24
.Top = 84
.Width = 30
.Font.Size = 18
End With
myColl.Add myClass
End Sub
Ich verstehe nicht, warum ich die Instanzen in einer Collection (o. array) "myColl" sammeln muss. Ohne dies funktioniert das Eventhandling nicht.
Beschreibung des Code-Schreibers:
...Damit das auch für mehrere geht, benutze ich noch eine eine Collection, in der
alle Steuerelemente, die der Klasse zugeordnet, gesammelt werden...
Mit "Set myClass = New cls_Test" instanziere ich doch ein Objekt der Klasse, welches deren Eigenschaften erbt. Wenn dieses Control ein Event auslöst, muss es dem Control doch egal sein, ob es in irgendeiner Collection gesammelt wurde?!
Wenn mir da jemand auf die Sprünge helfen könnte, würde meine Dankbarkeit grenzenlos sein! ;)
Danke vorab
Micha