Hallo zusammen,
ich erstelle mir dynamische Controls (z.B. CommandButtons) und mittels u.g. Makro (Beispiel) kann ich diese auch ansprechen (Klick Ereignis). Durch Klick auf den Button werden dynamisch erstellte CheckBox erstellt in einem anderen Frame, etc. (nach Vorlage von Thomas Risi)
Um die Controls immer ansprechen zu können, lass ich u.g. Makro laufen nach deren Erstellung - damit kann ich diese Controls ansprechen. Das Problem ist dass wenn unteres Makro ein paar mal lief, dass dann bei dem Klick Ereignis manche Aktionen doppelt ausgeführt werden.
Woran kann das liegen?
Vielen Dank schon mal,
Torsten
Option Explicit
Dim UFControls() As cUFC
Private Sub UserForm_Initialize()
Dim item As MSForms.Control
Dim n%: n = -1
For Each item In Me.Controls
n = n + 1
ReDim Preserve UFControls(n)
Set UFControls(n) = New cUFC
UFControls(n).Create item
Next
End Sub
Im Klassenmodul steht folgender Code
Option Explicit
'Idea by Thomas Risi
'http://rtsoftwaredevelopment.de/
Private WithEvents cmdBtn As MSForms.CommandButton
Private WithEvents txtBox As MSForms.TextBox
Private WithEvents chkBox As MSForms.CheckBox
Private WithEvents optBtn As MSForms.OptionButton
Private WithEvents lstBox As MSForms.ListBox
Private WithEvents cmbBox As MSForms.ComboBox
Public Function Create(cntrl As MSForms.Control) As Object
Set Create = Nothing
If TypeOf cntrl Is MSForms.CommandButton Then
Set cmdBtn = cntrl
Set Create = Me
ElseIf TypeOf cntrl Is MSForms.TextBox Then
Set txtBox = cntrl
Set Create = Me
ElseIf TypeOf cntrl Is MSForms.CheckBox Then
Set chkBox = cntrl
Set Create = Me
ElseIf TypeOf cntrl Is MSForms.OptionButton Then
Set optBtn = cntrl
Set Create = Me
ElseIf TypeOf cntrl Is MSForms.ListBox Then
Set lstBox = cntrl
Set Create = Me
ElseIf TypeOf cntrl Is MSForms.ComboBox Then
Set cmbBox = cntrl
Set Create = Me
End If
End Function
Private Sub chkBox_Change()
test chkBox
End Sub