@ Andre
Ja ist eine möglichkeit.
Habe aber das problem das es bis zu 50 Meldungen sein können, daher ist es ein sehr großer aufwand.
Daher eine neue frage an euch:
Wie ist es möglich das aktive Control ohne das es in einen Frame oder sontiges ist zu ermitteln?
Das Control ist auf einer UF.
Ich gestallte die UF gerade um so das sie ohne Frame's ist
anbei mal ein Lösungsansatz. Bei einer größeren Anzahl lohnt sich ein Einstieg in die Klassenprogrammierung. Du müsstest die Checkboxen beim Start des Userform "einsammeln" und dieser Sammlung bzw. den drin enthaltenen Elementen dann die Events zuweisen.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Private Sub UserForm_Click()
MsgBox ActiveControl.Name
If TypeName(ActiveControl) = "Frame" Then
MsgBox ActiveControl.ActiveControl.Name
If TypeName(ActiveControl.ActiveControl) = "Frame" Then MsgBox ActiveControl.ActiveControl.ActiveControl.Name
End If
End Sub
Deine Beispiel Datei ist schon fast das was ich gesucht habe.
Mit OptionButton habe ich schon einen Test gemacht und funktioniert. Jetzt brauch ich das ganze für ComboBox oder TextBox.
Da komme ich einfach nicht weiter!
Was und wie muß umgeschrieben werden, kannst du da nochmal helfen?
04.10.2018, 16:22 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2018, 19:21 von schauan.)
Hallöchen,
Du müsstest in der Klasse nach den verschiedenen Controls differenzieren und im Userform entsprechende unterschiedliche Collections bilden. Wenn Du genaueres beschreibst, dann kann ich auch genauer drüber schauen
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
04.10.2018, 17:07 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2018, 17:07 von snb.)
Im Userform
Code:
Dim sp() As New c_check
Public Sub UserForm_Initialize()
ReDim sp(Controls.Count)
For Each it In Controls
If TypeName(it) = "CheckBox" Then Set sp(it.TabIndex).v_CB = it
Next
End Sub
Public Sub UserForm_Initialize()
ReDim sp(Controls.Count)
For Each it In Controls
If TypeName(it) = "CheckBox" Then Set sp(it.TabIndex).v_CB = it
If TypeName(it) = "OptionButton" Then Set sp(it.TabIndex).v_OB = it
If TypeName(it) = "TextBox" Then Set sp(it.TabIndex).v_TB = it
If TypeName(it) = "ComboBox" Then Set sp(it.TabIndex).v_CoB = it
Next
End Sub
Code:
Public WithEvents v_CB As MSForms.CheckBox
Public WithEvents v_OB As MSForms.OptionButton
Public WithEvents v_TB As MSForms.TextBox
Public WithEvents v_CoB As MSForms.ComboBox
Private Sub v_CB_Click()
MsgBox v_CB.Name
End Sub
Private Sub v_OB_Click()
MsgBox v_OB.Name
End Sub
Private Sub v_TB_Change()
MsgBox v_TB.Name
End Sub
Private Sub v_CoB_DropbuttonClick()
MsgBox v_CoB.Name
End Sub