Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Active Control Finden
#21
Hallöchen,

also, das ist einfach aber je nach Anzahl der Controls etwas aufwändig … Du dimensionierst in einem allgemeinen Modul eine Variable, z.B.

Public strControl$

und füllst sie wenn Du auf einen Button drückst mit den entsprechenden "Absenderinformationen" Smile

Private Sub CommandButton1_Click()
strControl = "Frame1.CommandButton1"
'... der Code
End Sub

Private Sub CommandButton2_Click()
strControl = "Frame1.CommandButton2"
'... der Code
End Sub

Du hast dann in der Variable immer das letzte betätigte Control.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#22
Hallo!

@ 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
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top
#23
Hallöchen,

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.


Angehängte Dateien
.xlsm   CBoSammelEvent.xlsm (Größe: 20,73 KB / Downloads: 6)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#24
Geht einfach so:


Code:
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


Letzendlich wirst du ein Multipage verwenden.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#25
Hallo snb,

stimmt, einfach so Smile

Ich hab eher daran gedacht, dass da direkt bei Click auf das Control was passieren soll und nicht irgendwann später.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#26
Hallo!

Danke für eure Antworten.

Zitat:Ich hab eher daran gedacht, dass da direkt bei Click auf das Control was passieren soll und nicht irgendwann später.

Andre hat recht so wollte ich es haben.

Werde jetzt erstmal Testen!
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top
#27
Hallo André

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?
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top
#28
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 Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#29
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

Im classModule c_check
Code:
Public WithEvents v_CB As MSForms.CheckBox

Private Sub v_CB_Click()
    MsgBox v_CB.Name
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#30
Und weiter:


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
       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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste