Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Buttons in Userform erstellen + Funktion übergeben

Buttons in Userform erstellen + Funktion übergeben
29.09.2017 09:19:22
Malte
Hallo!
Ich möchte in einer Userform n Buttons erzeugen. Das klappt soweit auch nach meinen Vorstellungen.
Jetzt möchte ich, dass jedem dieser Buttons eine Funktion zugeordnet wird und die Laufvariable j dieser Funktion übergeben wird. Ich habe versucht dies mit der Eigenschaft ".OnAction" zu realisieren.
Leider bekomme ich folgende Fehlermeldung vom Debugger in der entsprechenden Zeile:
"Objekt unterstützt diese Eigenschaft oder Methode nicht"
Zu der Syntax von .OnAction habe ich im Netz viele unterschiedliche Varianten gelesen um eine Funktion mit Variablenübergabe zuzuweisen. Davon hat leider keine funktioniert.
Selbst wenn ich dem Button nur ein Sub zuweisen will, bekomme ich die gleiche Fehlermeldung.
Warum wird die Eigenschaft .OnAction nicht unterstützt von meinen Buttons?
Mein Ansatz:

Function ButtonsErzeugen(n as Integer)
For j = 0 To n - 1
Set Bttn = UF_ScanEinlagern.Controls.Add("Forms.CommandButton.1")
With Bttn
.Name = "Best" & j
.Height = 65
.Width = 90
.Left = (j + 1) * 102
.Top = 168
.Caption = "Einlagern!"
.OnAction = "'EinlagernDurchfuehren " & j & "'"
End With
Next j
End Function
Private Function EinlagernDurchfuehren(stelle As Integer)
MsgBox "Hier passiert was!"
End Function

Vielen Dank!
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Buttons in Userform erstellen + Funktion übergeben
29.09.2017 09:28:42
EtoPHG
Hallo Malte,
.OnAction ist eine Eigenschaft des CommandBarControl-Objekts.
Diese Eigenschaft gibt es weder bei ActiveX-Buttons, noch bei Forms-Buttons!
Wenn du Buttons in der UF erstellst, musst du auch den Ereigniscode für diese erzeugen, bzw. mit einer eigenen Klasse die Ereignis für die Buttons programmieren.
Gruess Hansueli
Anzeige
AW: Buttons in Userform erstellen + Funktion übergeben
01.10.2017 17:19:31
Malte
Hallo Hansueli,
Ich hatte mich bisher nicht mit selbst erstellten Klassen befasst. Daher musste ich mich erstmal ein wenig reinfuchsen in das Thema!
Jetzt hat es aber geklappt!
Vielen Dank!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Buttons in Userform erstellen und Funktionen zuweisen


Schritt-für-Schritt-Anleitung

Um eigene Buttons in einer Excel Userform zu erstellen und ihnen Funktionen zuzuweisen, folge diesen Schritten:

  1. Erstelle eine Userform: Öffne den VBA-Editor (Alt + F11), füge eine neue Userform hinzu und nenne sie z.B. UF_ScanEinlagern.

  2. Buttons erstellen: Verwende den folgenden VBA-Code, um n Buttons zu generieren und ihnen eine Funktion zuzuweisen:

    Function ButtonsErzeugen(n As Integer)
       Dim j As Integer
       Dim Bttn As MSForms.CommandButton
    
       For j = 0 To n - 1
           Set Bttn = UF_ScanEinlagern.Controls.Add("Forms.CommandButton.1")
           With Bttn
               .Name = "Best" & j
               .Height = 65
               .Width = 90
               .Left = (j + 1) * 102
               .Top = 168
               .Caption = "Einlagern!"
           End With
       Next j
    End Function
  3. Funktionen zuweisen: Da die .OnAction-Eigenschaft nicht für ActiveX- oder Forms-Buttons verfügbar ist, musst du die Ereignisse der Buttons über eine Klasse erstellen. Hier ein einfaches Beispiel, um eine Funktion zu implementieren:

    Private Function EinlagernDurchfuehren(stelle As Integer)
       MsgBox "Hier passiert was für Button " & stelle
    End Function
  4. Ereignishandler erstellen: Definiere die Ereignisse in einer Klasse, um die Funktion EinlagernDurchfuehren mit der entsprechenden Button-Instanz zu verknüpfen.


Häufige Fehler und Lösungen

  • Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht": Stelle sicher, dass du ActiveX-Buttons oder Forms-Buttons verwendest. Die .OnAction-Eigenschaft ist nicht für diese Button-Typen verfügbar.

  • Ereignis nicht ausgelöst: Überprüfe, ob du die Ereignisse in einer Klasse oder im Modul korrekt verknüpft hast.


Alternative Methoden

Wenn du Excel VBA Buttons erstellen möchtest, kannst du auch die Shapes-Funktion nutzen:

  1. Shape-Buttons erstellen: Verwende:

    Dim shp As Shape
    Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 100, 100, 100, 50)
    shp.TextFrame.Characters.Text = "Klick mich"
  2. Makro zuweisen: Klicke mit der rechten Maustaste auf das Shape und wähle "Makro zuweisen", um die Funktion zu verbinden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um zwei Buttons in einer Userform zu erstellen:

Private Sub UserForm_Initialize()
    Call ButtonsErzeugen(2) ' Erzeugt 2 Buttons
End Sub

Private Function EinlagernDurchfuehren(stelle As Integer)
    MsgBox "Button " & stelle & " wurde gedrückt!"
End Function

Die Userform wird beim Starten mit zwei Buttons angezeigt, die die Funktion EinlagernDurchfuehren aufrufen.


Tipps für Profis

  • Ereignis-Handler optimieren: Verwende eine Klasse, um alle Buttons zu verwalten. So kannst du den Code modularisieren und die Wartbarkeit erhöhen.

  • Gestaltung anpassen: Du kannst die Eigenschaften der Buttons wie Hintergrundfarbe, Schriftart und Rahmen anpassen, um sie ansprechender zu gestalten.

  • Debugging: Nutze Debug.Print in deinem Code, um Informationen in das Direktfenster auszugeben. Dies hilft bei der Fehlersuche.


FAQ: Häufige Fragen

1. Warum kann ich die .OnAction-Eigenschaft nicht verwenden?
Die .OnAction-Eigenschaft ist nur für CommandBarControl-Objekte verfügbar. Für Userform-Buttons musst du Ereignisprozeduren verwenden.

2. Wie kann ich mehrere Funktionen mit einem Button verknüpfen?
Du kannst die Logik innerhalb einer Funktion aufbauen, um verschiedene Aktionen basierend auf Bedingungen auszuführen.

3. Kann ich die Buttons zur Laufzeit verändern?
Ja, du kannst die Eigenschaften der Buttons zur Laufzeit ändern, indem du auf die Controls der Userform zugreifst.

4. Wie kann ich die Userform speichern?
Speichere die Userform in deinem VBA-Projekt, indem du das Projekt speicherst. Userforms werden zusammen mit dem Workbook gespeichert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige