@ 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, 17:22 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2018, 20: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, 18:07 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2018, 18: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