Ich versuche, Code zu schreiben, der das Ereignis "ändern" von einer ComboBox auf meinem Benutzerformular behandelt.VBA-Code verhält sich anders beim Schritt
Ich ging durch this Antwort auf die Frage und erstellt eine eigene Klasse usw.
Aber es funktioniert nicht. Die Verwendung desselben Codes in einem neuen Projekt funktioniert gut, dieser Code in diesem Projekt funktioniert manchmal, wenn ich die "Schritt für Schritt" -Ausführung (F8) benutze, aber wenn ich normale Ausführung verwende, funktioniert das nicht.
Mit Blick auf ähnliche Situationen anderer Leute fügte ich "DoEvents" hinzu, aber das half nicht.
Dies ist mein Code in der Userform
Private Sub UserForm_Initialize()
Dim ComboBox_Collection As Collection
Dim ctrl As Control
Dim cbc As ComboBox_Class
Set ComboBox_Collection = New Collection
For Each ctrl In UserForm1.MultiPage.Pages(2).Controls
DoEvents
If TypeName(ctrl) = "ComboBox" Then
DoEvents
Set cbc = New ComboBox_Class
Set cbc.Control = ctrl
ComboBox_Collection.Add cbc
DoEvents
End If
Next ctrl
Set cbc = Nothing
End Sub
Und das Klassenmodul, mit dem Namen "ComboBox_Class":
Private WithEvents TriggerComboBox As MSForms.ComboBox
Public Property Set Control(CB As MSForms.ComboBox)
Set TriggerComboBox = CB
End Property
Private Sub TriggerComboBox_Change()
MsgBox ("yay")
End Sub
Können Sie uns sagen, was Sie gerne geschehen würde? –
@ScottMarcus, ich möchte einen einfachen Code haben, der das Ereignis "change" für alle Steuerelemente eines bestimmten Typs in einem Benutzerformular behandelt. – mathgenius