Ich erstelle Schaltflächen dynamisch in einem Excel-Benutzerformular mit dem folgenden Code:
%Vor%Ich möchte eine Funktion zuweisen, die ausgeführt wird, wenn diese Schaltflächen angeklickt werden, aber ich finde keine direkte Möglichkeit, dies zu tun, da es keine Eigenschaft als Teil der Schaltfläche selbst gibt.
Gibt es eine Möglichkeit, dies unter Verwendung des obigen Idioms zu tun? Sollte ich die ganze Sache auf eine andere Art und Weise durchgehen?
Sie müssen Code- / Event-Handler für jede Schaltfläche dynamisch erstellen.
Es dauert ein bisschen - siehe hier: Ссылка
Ein besserer Weg wäre es, eine Menge Buttons auf dem Formular (so viele wie Sie denken, dass Sie brauchen) im Voraus zu erstellen. Erstellen Sie auch den Event-Handler-Code. Machen Sie alle zunächst versteckt.
Wenn Sie Ihr Formular öffnen, können Sie die Schaltflächenbeschriftungen dynamisch ändern, sichtbar machen und verschieben. Der Ereigniscode, den Sie ursprünglich erstellt haben, wird wie erwartet mit den aktivierten Schaltflächen verknüpft.
Ein Steuerelementereignis dynamisch in einem Excel-Formular hinzufügen; Sie müssen zuerst die Ereignisse in einem Klassenmodul hinzufügen. In meinem Beispiel füge ich ein Klassenmodul namens clsTEST mit einem Ereignis, btn_click ()
, hinzu %Vor%Wie Sie sehen können, müssen Sie nur die Beschriftung der Schaltfläche festlegen, um festzulegen, wie oft Sie darauf geklickt haben. Als nächstes geben Sie im Formularcode Folgendes ein:
%Vor%Wenn Sie das Formular aktivieren, wird eine Schaltfläche erstellt. Jedes Mal, wenn Sie auf die Schaltfläche klicken, ändert sich die Beschriftung.
Ich habe mir das auch angesehen. Scheint, dass Sie ein Makro ausführen können, indem Sie die OnClick-Eigenschaft verwenden:
%Vor%Dann erstellen Sie einen Makro mit diesem Namen, der die gewünschte Funktion ausführt. Das ist mein Hack, bis ich etwas besseres finde.
Tags und Links vba excel event-handling userform