Office: klickereignis eines dynamischen Button per vba auslösen

Helfe beim Thema klickereignis eines dynamischen Button per vba auslösen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, habe einen dynamisch erzeugten Button + Klasse, dies funktioniert, jetzt muß ich aber das Klickereignis dieses Button per VBA auslösen. wie kann... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Frodo, 19. September 2026 um 11:49 Uhr.

  1. Frodo Neuer User

    klickereignis eines dynamischen Button per vba auslösen


    Hallo,
    habe einen dynamisch erzeugten Button + Klasse, dies funktioniert, jetzt muß ich aber das Klickereignis dieses Button per VBA auslösen. wie kann ich diesen jetzt ansprechen, in der Objektliste der Userform erscheint er ja nicht.

    Gruß Frodo
     
  2. Hajo_Zi
    Hajo_Zi Erfahrener User
    Hallo Frodo

    ich kann es nur an meiner Datei testen, da ich nicht auf fremde Rechner schaue.
    Code:
    Option Explicit
    
    Private Sub CommandButton1_Click()
        CommandButton2_Click
    End Sub
    
    Private Sub CommandButton2_Click()
        MsgBox 1
    End Sub
    
    Gruß Hajo
     
    Zuletzt bearbeitet: 19. September 2026 um 14:50 Uhr
  3. Frodo Neuer User
    Hallo Hajo,
    vielleicht hilft das was ich habe

    in der Userform

    Private Sub UserForm_Initialize()
    Dim objButton As MSForms.CommandButton
    Dim objKlasse As cls_Buttons

    Set colButtons = New Collection

    Set objButton = Me.Controls.Add( _
    "Forms.CommandButton.1", _
    "cmdSchliessen", _
    True)

    With objButton
    .Left = Me.Width + 320
    .Top = Me.Height + 1903
    .Width = 80
    .Height = 25
    .Caption = "Beenden"
    .BackColor = RGB(255, 255, 255)
    End With
    Me.Tag = "Aktiv"
    Me.DatenAnzeigen
    Set objKlasse = New cls_Buttons

    objKlasse.Initialisieren objButton, Me

    colButtons.Add objKlasse


    NamenLaden
    ElementeLaden
    End Sub


    in der Klasse

    Option Explicit
    Private WithEvents mButton As MSForms.CommandButton
    Private mUserForm As Object

    Public Sub Initialisieren( _
    ByVal objButton As MSForms.CommandButton, _
    ByVal objUserForm As Object)

    Set mButton = objButton
    Set mUserForm = objUserForm
    MsgBox mUserForm.Tag
    End Sub

    Private Sub mButton_Click()

    Unload mUserForm

    End Sub
    Private Sub Kreuz()
    If mUserForm.Tag = "Schliessen" Then
    Unload mUserForm
    End If
    End Sub

    Mit folgendem fange ich das Schließkreuz ab

    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    ' Prüfen, ob der Schließbefehl vom Schließenkreuz (vbFormControlMenu) kommt
    If CloseMode = vbFormControlMenu Then
    ' Schließen abbrechen
    Cancel = True
    Me.Tag = "Schliessen"
    MsgBox "Bitte nutzen Sie den Button zum Schließen.", vbInformation, "Hinweis"

    End If

    Ende
    End Sub
    Private Sub Ende()

    Me.ScrollTop = Me.ScrollHeight
    End Sub

    Das Problem ist, wird die Userform über das Kreuz entladen, wird die Klasse nicht entladen. Dies gibt ein Problem wenn bei erneutem Aufruf der Userform in einem Auswahlmenue die Caption abgefragt werden soll.

    Gruß Frodo
     
  4. Hajo_Zi
    Hajo_Zi Erfahrener User

    klickereignis eines dynamischen Button per vba auslösen

    ich baue keine Datei nach. Ein Nachbau sieht anders aus als das Original.
    Ich hab das Problem schon in der Tabnelle nachgebaut.
    Viewlleicht sollte die Datei verlinkt werden?

     
  5. Frodo Neuer User
    Habe auf die Schnelle eine Kopie gemacht.
    Hoffe das passt.

    Gruß Frodo
     
  6. Hajo_Zi
    Hajo_Zi Erfahrener User
    ich kann Dir leider nicht helfen. Ich konnte die Userform mit 2 Schaltern nicht finden.
    Vielleicht solltest Du schreiben welche es ist? Vielleicht habe ich was übersehen?
    Du hast meinen Code schon in der Userform getestet? Der sollte eigentlich gehen.

     
  7. Frodo Neuer User
    Hajo, du hast nichts übersehen, es gibt keine Form mit statischen Button, dein Beispiel gilt für statische Button, bei mir ist er dynamisch erstellt.
    Wenn du im Editor in deinem Beispiel die Form aufrufst und dann Code anzeigen wählst, dann siehst du oben in der Auswahl außer der Userform auch die beiden Button. Machst du das mit einer meiner Formen, steht dort nur die Userform, obwohl ja der Button vorhanden ist. In meinem Fall steht auch das was der Button machen soll in der Klasse.

    Gruß Frodo
     
  8. Hajo_Zi
    Hajo_Zi Erfahrener User

    klickereignis eines dynamischen Button per vba auslösen

    das habe ich überlesen. Entschuldigung.
    Bei Code per VBA schreiben bin ich nicht der Fachmann.
    Aber für andere Antworter solltest Du schreiben welche UserForm.

     
  9. knobbi38 hat Ahnung
    Unabhängig davon, sollte eine so etwas nicht gemacht werden - ist keine "saubere" Programmierung. Rufe im Click_Event
    eine Prozedur auf, welche du auch von anderer Stelle aufrufen kannst.
    Klassen werden übrigens im UF Terminate- oder QueryClose Event aufgeräumt und sollten sich auch nicht selbst terminieren.

    Knobbi38
     
  10. Klaus-Dieter
    Klaus-Dieter Erfahrener User
    Hallo Frodo,

    da gehe ich anders vor. Im Userform sind alle erforderlichen Objekte vorhanden. Ja nachdem, was auf was der Anwender zugreifen soll (kann) blende ich die erforderlichen Objekte ein oder aus. Das lässt sich einfacher programmieren, als wenn man versucht, mit zur Laufzeit erzeugten Objekten zu arbeiten. Der Effekt dürfte der gleiche sein.
     
  11. Frodo Neuer User
    Hallo,
    es kommt ja darauf an was man machen will, in der einen Userform sind ca 15000 Objekte, die manuell zu erstellen, na ja. Außerdem richtet sich die Anzahl nach dem Datenbereich (Anzahl Zeilen*Anzahl Spalten)
    Aber darum geht es nicht, es geht auch nicht um das normale Schließen der Userform.Das Problem ist das unerwartete Schließen der Userform über das Schließkreuz. Der Closmode ist da ein anderer als bei Unload. Die Userform wird einfach aus demSpeicher gelöscht. Da dasTerminate aber erst danach kommt,greift es auch nicht mehr.
    Daher bleiben eigentlich nur zwei Wege. entweder das Klickereignis des dynamischen Buttons per VBA auszulösen, oder aber der Klasse eine Information zu geben(zB. Änderung des Tag der Userform) die dann das Unload ausführt.
    Bisher aber noch kein Weg gefunden, weder für das eine noch das andere.
    Hatte deshalb auf Hilfe gehofft.



    Gruß Frodo
     
  12. OilMax Erfahrener User
    Hallo Frodo oder Gandalf69,

    Auch auf die Gefahr mich unbeliebt zu machen, musst diesen Rüffel nun über dich ergehen lassen:

    Du hast von mir nebst späteren Hinweisen eigentlich alles mitgegeben bekommen wie man sowas in einer einzigen Userform macht. Die Combobox aus der Userform rausnehmen und in einem eigenen RibbonTab packen um eine weitere Userform zu vermeiden hatte ich dir auch nahegelegt.

    Wenn du diesen Weg weiter verfolgt hättest, wäre einfach ein kleines Array erforderlich gewesen um die Verlinkung dieser Combobox anhand der ListenID nach Bedarf aufzulösen und passend zu routen statt dies mit diversen Button oder wie auch immer zu machen.

    Mit diesem Umbau braucht es kein Unload ME mehr, da man via .Hide die Userform ausblendet und bei passender ID der Combobox diese Userform via Activate entlädt und passend neu laden kann Den parametrisierten Aufruf dazu hatte ich dir auch mitgegeben.

    Damit wären eigentlich alle unnötigen Verrenkungen vom Tisch. Aber das musst du selbst wissen, wie lang du noch gegen sinnvolle Lösungsansätze ankämpfst.

    Nachtrag: So wie ich es dir gezeigt hatte braucht es das explizite Terminieren der Klasse definitiv nicht da die Klasse funktional Code‑Behind erzeugt wurde. Es gibt natürlich auch ein paar Sonderfälle, was in meinem Beispiel aber überhaupt nicht zutrifft.
    Im Klartext spätestens beim Schließen der Excel Instanz werden alle Elemente des Userforms gelöscht und der Speicher wird freigegeben.

    Ich bin nun aus endgültig aus diesem Thema raus.

    Gruß Uwe
     
  13. Klaus-Dieter
    Klaus-Dieter Erfahrener User

    klickereignis eines dynamischen Button per vba auslösen

    Hallo Frodo,

    ohne dein Projekt zu kennen, kann ich dir sagen, dass das ein kranker Ansatz ist. Wer soll so etwas bedienen? Da bin ich mir ganz sicher, dass Excel bessere Möglichkeiten bietet.
     
Thema:

klickereignis eines dynamischen Button per vba auslösen

Die Seite wird geladen...
  1. klickereignis eines dynamischen Button per vba auslösen - Similar Threads - klickereignis dynamischen Button

  2. Dynamische Aktualisierung aus mehreren Dateien

    in Microsoft Excel Hilfe
    Dynamische Aktualisierung aus mehreren Dateien: Hallo, ich habe eine Sammeldatei, die aus mehreren Excel Dateien Werte über direkte Zellbezüge bzw. SVERWEISE die Daten aktualisiert. Diese Sammeldatei ist für mehrere Länder definiert. Die Pfade...
  3. Excel Datenüberprüfung mit dynamischer Spalte

    in Microsoft Excel Hilfe
    Excel Datenüberprüfung mit dynamischer Spalte: Hallo, ich habe ein Formular mit fixen Texten (in Zellen) mit einer Übersetzungstabelle in einem separaten Blatt via Formeln in dynamische Textfelder abgeändert. Das funktioniert bestens. Das...
  4. Diagrammdaten dynamisch erzeugen

    in Microsoft Excel Hilfe
    Diagrammdaten dynamisch erzeugen: Hallo, dank der tatkräftigen Hilfe von allen in diesem (Office 365) - SUMMENPRODUKT dynamisch aus bestimmten Tabellenblättern Thread bin ich total weit mit meinem Projekt. Nun fehlt mir noch...
  5. SUMMENPRODUKT dynamisch aus bestimmten Tabellenblättern

    in Microsoft Excel Hilfe
    SUMMENPRODUKT dynamisch aus bestimmten Tabellenblättern: Hallo zusammen, ich habe bei meiner bisherigen Zählerstandsmappe bisher folgende Grundstruktur: Es gibt jeweils Tabellenblätter (2024, 2025 etc.) wo in Spalte A (A3-A367 bzw. bei Schaltjahr bis...
  6. Formel: Mehrere Werte vergleichen mit dynamischer Tabelle

    in Microsoft Excel Hilfe
    Formel: Mehrere Werte vergleichen mit dynamischer Tabelle: Hallo zusammen Ich suche eine funktionierende Formel für mehrere Vergleichswerte in verschiedene Arbeitsmappen. Ausgangslage:Die Suchmatrix in welcher Tabelle gesucht wird, soll über die Zelle...
  7. SUMMEWENN mit dynamische Tabelle auf 1 Spalte eingrenzen

    in Microsoft Excel Hilfe
    SUMMEWENN mit dynamische Tabelle auf 1 Spalte eingrenzen: Hallo, wie kann ich bei SUMMEWENN mit dyn. Tabellen den Spaltenbereich eingrenzen? ich habe mit Power Query eine Tabelle zusammengefasst [ATTACH] und mit EINDEUTIG die unterschiedlichen Treffer...
  8. Fehler Klickereignis

    in Microsoft Access Hilfe
    Fehler Klickereignis: Hallo, ich habe einen merkwürdigen Fehler den ich nicht nachvollziehen kann. Ich habe eine DB die aus Front und eine Back besteht. In der Front sind alle Formulare Abfragen und Berichte drin....
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden