Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Schaltflächen in Userform dynamisch+Makro zuweisen

Schaltflächen in Userform dynamisch+Makro zuweisen
14.03.2009 15:48:09
SteffenS
Hallo Zusammen,
ich möchte in einer Userform dynamisch Buttons erzeugen.
Wie kann ich diesen Buttons, aber noch einen Code
zuweisen. Ich möchte eigentlich nicht die ganzen Buttons als

Private Sub Button_1_Click
End Sub



Private Sub Button_2_Click
End Sub


.
.
.
.
anlegen.
Danke im Voraus.
MFG
Steffen

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Schaltflächen in Userform dynamisch+Makro zuweisen
14.03.2009 15:54:11
Peter
Hallo Steffen,
dann beschäftige dich eingehend mit Klassenmodulen, denn damit kannst du dein Vorhaben realisieren.
Bei www.haserodt.de findest du zum Thema einiges.
Gruß Peter
AW: Schaltflächen in Userform dynamisch+Makro zuweisen
14.03.2009 15:55:00
ransi
HAllo Steffen
Da musst du eine eigene Klasse programmieren.
Schau es dir mal an:
http://www.online-excel.de/excel/singsel_vba.php?f=57
ransi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Schaltflächen in Userform mit Makro zuweisen


Schritt-für-Schritt-Anleitung

Um dynamisch Schaltflächen in einer Userform zu erzeugen und diesen Buttons einen Makrocode zuzuweisen, kannst du die folgenden Schritte befolgen:

  1. Erstelle eine neue Userform:

    • Öffne den VBA-Editor (Alt + F11).
    • Füge eine neue Userform hinzu (Einfügen > UserForm).
  2. Füge ein Klassenmodul hinzu:

    • Rechtsklicke im Projektfenster auf "Module" und wähle "Klassenmodul".
    • Benenne das Klassenmodul, z.B. ButtonClass.
  3. Programmiere die Klasse:

    • Im Klassenmodul füge folgenden Code hinzu, um die Schaltfläche zu definieren:

      Public WithEvents Button As MSForms.CommandButton
      
      Public Sub CreateButton(frm As UserForm, btnName As String, leftPos As Integer, topPos As Integer)
       Set Button = frm.Controls.Add("Forms.CommandButton.1", btnName)
       With Button
           .Caption = btnName
           .Left = leftPos
           .Top = topPos
       End With
      End Sub
      
      Private Sub Button_Click()
       MsgBox "Button " & Button.Caption & " wurde geklickt."
      End Sub
  4. Erstelle die Schaltflächen in der Userform:

    • Im Code der Userform kannst du nun Instanzen der Klasse erstellen und Schaltflächen hinzufügen:

      Dim btn As ButtonClass
      
      Private Sub UserForm_Initialize()
       Set btn = New ButtonClass
       btn.CreateButton Me, "Button1", 10, 10
       Set btn = New ButtonClass
       btn.CreateButton Me, "Button2", 10, 40
      End Sub
  5. Testen:

    • Schließe den VBA-Editor und führe die Userform aus. Jeder Button zeigt eine Nachricht, wenn er geklickt wird.

Häufige Fehler und Lösungen

  • Fehler: "Objektvariable nicht gesetzt"
    Lösung: Stelle sicher, dass die Instanz des Klassenmoduls korrekt erstellt wird.

  • Fehler: Schaltflächen erscheinen nicht
    Lösung: Überprüfe die Positionierungsparameter in der CreateButton-Methode.


Alternative Methoden

Anstelle eines Klassenmoduls kannst du auch direkt im Userform-Code Schaltflächen erstellen. Diese Methode ist jedoch weniger flexibel:

Private Sub UserForm_Initialize()
    Dim btn As MSForms.CommandButton
    Set btn = Me.Controls.Add("Forms.CommandButton.1", "Button1")
    With btn
        .Caption = "Button1"
        .Left = 10
        .Top = 10
    End With
End Sub

Praktische Beispiele

Eine häufige Anwendung ist das Erstellen von dynamischen Schaltflächen basierend auf Benutzereingaben. Zum Beispiel:

Private Sub btnCreate_Click()
    Dim i As Integer
    For i = 1 To 5
        Dim btn As New ButtonClass
        btn.CreateButton Me, "Button" & i, 10, 10 + (i * 30)
    Next i
End Sub

Hierbei werden fünf Schaltflächen erstellt, wenn der Benutzer auf btnCreate klickt.


Tipps für Profis

  • Verwende eine Sammlung, um alle erstellten Schaltflächen zu verwalten. So kannst du sie einfacher steuern und verwalten.
  • Passe das Design der Schaltflächen an, um die Benutzererfahrung zu verbessern. Du kannst Farben, Schriftarten und Stile direkt im Code ändern.

FAQ: Häufige Fragen

1. Wie kann ich die Schaltflächen dynamisch positionieren?
Du kannst die Parameter leftPos und topPos in der CreateButton-Methode anpassen, um die Positionen zu ändern.

2. Ist es möglich, mehrere Instanzen der Schaltflächenklasse zu erstellen?
Ja, du kannst mehrere Instanzen der Klasse erstellen, um verschiedene Schaltflächen zu generieren. Achte darauf, jede Instanz einem eigenen Namen zu geben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige