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

Auf Userform Controls zur Laufzeit erstellen?

Forumthread: Auf Userform Controls zur Laufzeit erstellen?

Auf Userform Controls zur Laufzeit erstellen?
18.06.2007 10:58:17
Johannes
Hallo xlGemeinde,
der Betreff sagts eigentlich schon. Was ich genau machen moechte ist, Checkboxen zur Laufzeit dynamisch auf einer Userform zu erstellen und auf Ereignisse und Eigenschaften jener zugreifen.
Ueber einen Trigger, wie das funktioniert, wuerd ich mich freuen. :-)
Gruesse und vielen Dank vorab,
Johannes D.

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Teilloesung - aber wie auf Ereignisse reagieren?
18.06.2007 11:30:59
Johannes
Set x = UserForm1.Controls.Add("Forms.Checkbox.1", "DynamischeCheckbox", True)
Und wie komm ich jetzt ausgeloesten Ereignissen jener auf die Schliche? :-)
Gruesse,
Johannes

AW: Teilloesung - aber wie auf Ereignisse reagieren?
18.06.2007 13:01:04
Rudi
Hallo,
dafür musst du die Boxen einer eigenen Klasse zuweisen.
in ein Klassenmodul (clsCheckBox)

Option Explicit
Public WithEvents myCBX As MSForms.CheckBox
Sub myCBX_Click()
MsgBox myCBX.Name
End Sub


in ein Modul:


Public oCBX(1 To 10) As New clsCheckBox


in die UF:


Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 10
Set oCBX(i).myCBX = Me.Controls.Add("forms.checkbox.1")
With oCBX(i).myCBX
.Name = "myCBX " & i
.Left = 10
.Top = 10 + (i - 1) * 15
.Caption = i
End With
Next
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
Gigantisch! Danke!
18.06.2007 13:38:44
Johannes
Hallo Rudi,
wunderbar - du hat meinen Tag gerettet! :-)
Gruesse,
Johannes
;
Anzeige
Anzeige

Infobox / Tutorial

Userform Controls zur Laufzeit erstellen in Excel VBA


Schritt-für-Schritt-Anleitung

Um Userform Controls zur Laufzeit in Excel VBA zu erstellen, folge diesen Schritten:

  1. Öffne das Visual Basic for Applications (VBA) Fenster:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein Klassenmodul hinzu:

    • Klicke mit der rechten Maustaste im Projektfenster und wähle Einfügen > Klassenmodul.
    • Benenne das Modul in clsCheckBox.
  3. Füge den Code für die Checkbox hinzu:

    • Füge den folgenden Code in das Klassenmodul ein:
    Option Explicit
    Public WithEvents myCBX As MSForms.CheckBox
    Sub myCBX_Click()
       MsgBox myCBX.Name
    End Sub
  4. Füge ein Modul hinzu:

    • Klicke erneut mit der rechten Maustaste und wähle Einfügen > Modul.
    • Füge diesen Code in das Modul ein:
    Public oCBX(1 To 10) As New clsCheckBox
  5. Füge den Code zur Userform hinzu:

    • Gehe zu deiner Userform und füge den folgenden Code in das UserForm_Initialize-Ereignis ein:
    Private Sub UserForm_Initialize()
       Dim i As Integer
       For i = 1 To 10
           Set oCBX(i).myCBX = Me.Controls.Add("Forms.Checkbox.1")
           With oCBX(i).myCBX
               .Name = "myCBX " & i
               .Left = 10
               .Top = 10 + (i - 1) * 15
               .Caption = i
           End With
       Next
    End Sub
  6. Starte die Userform:

    • Führe die Userform aus, und du solltest die dynamisch erstellten Checkboxen sehen.

Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"

    • Lösung: Stelle sicher, dass die Controls korrekt hinzugefügt werden. Überprüfe den Namen der Userform und die Verwendung von Me.Controls.Add.
  • Fehler: Ereignisse werden nicht ausgelöst

    • Lösung: Vergewissere dich, dass die Checkboxen einer Klasse mit Ereignissen zugewiesen sind. Ohne die Klasse wird das myCBX_Click()-Ereignis nicht aufgerufen.

Alternative Methoden

Wenn du keine Klassenmodule verwenden möchtest, kannst du auch einfach UserForm.Controls verwenden, um zu steuern, was passiert, wenn Checkboxen hinzugefügt werden. Das erfordert jedoch manuelles Management der Ereignisse, was weniger flexibel ist.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du Checkboxen zur Laufzeit hinzufügen kannst:

Private Sub UserForm_Initialize()
    Dim chk As MSForms.CheckBox
    Set chk = Me.Controls.Add("Forms.Checkbox.1", "CheckBox1")
    With chk
        .Caption = "Option 1"
        .Top = 10
        .Left = 10
    End With
End Sub

In diesem Beispiel wird eine einfache Checkbox zur Userform hinzugefügt, die beim Start der Userform erscheint.


Tipps für Profis

  • Nutze UserForm.Controls und Me.Controls.Add, um dynamisch verschiedene Steuerelemente hinzuzufügen.
  • Experimentiere mit verschiedenen Steuerelementen, wie z.B. OptionButtons oder TextBoxes, um deine Userform interaktiver zu gestalten.
  • Denke daran, das Layout der Userform so zu gestalten, dass es für den Benutzer intuitiv und ansprechend ist.

FAQ: Häufige Fragen

1. Wie kann ich auf die Eigenschaften der dynamisch hinzugefügten Controls zugreifen?
Du kannst auf die Eigenschaften der Controls über die Variable zugreifen, die du in der Klasse definiert hast, z.B. myCBX.Caption.

2. Funktioniert das auch in älteren Versionen von Excel?
Ja, die Verwendung von UserForm.Controls und Controls.Add funktioniert in den meisten Versionen von Excel, die VBA unterstützen. Achte darauf, dass du die richtige Syntax verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige