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

Controls in userform ansprechen

Forumthread: Controls in userform ansprechen

Controls in userform ansprechen
29.01.2016 08:33:13
Marc
HI,
ich habe folgendes Problem und bitte um Hilfe:
Hier generiere ich einen Haufen Togglebuttons in der Suerform WW_Start. Soweit so gut.
Private Sub UserForm_Initialize()
For i = 1 To 100
Set objToggleButton = WW_Start.Controls.Add("Forms.ToggleButton.1", , True)
With objToggleButton
.Height = Hoehe
.Width = Breite
End With
Next i
End Sub
Nun möchte ich später auf die Eigenschaften und vor
allem die Events der Togglebutton zugreifen.
Habe dazu viel gelesen und auch Beispiele im Netz gefunden,
mit Textboxen bekomme ich es hin, mit Togglebuttons aber nicht.
Bitte um Hilfe.
Hier der textbox-Code der läuft:
Option Explicit
Private WithEvents mevt_TextBox As MSForms.TextBox
Private Sub UserForm_Initialize()
Set mevt_TextBox = Me.Controls.Add("Forms.TextBox.1", , True)
mevt_TextBox.Move 6, 6, 72, 18
End Sub

Private Sub mevt_TextBox_Change()
MsgBox "In der TextBox '" & mevt_TextBox.Name & _
"' wurde eine Eingabe gemacht!" & vbCr & _
"Text: " & mevt_TextBox.Text
End Sub
Könnte mir da mal jemand der es kann auf die Sprünge helfen ? Danke.

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Controls in userform ansprechen
29.01.2016 09:19:32
Nepumuk
Hallo,
dazu benötigest du eine Klasse des ToggleButtons. Ich hab dir mal eine Beispielmappe erstellt:
https://www.herber.de/bbs/user/103137.xlsm
Gruß
Nepumuk

AW: Controls in userform ansprechen
29.01.2016 09:42:55
Marc
Hallo Nepumuk,
das ist exakt die Lösung die ich gesucht habe, hilft mir sehr weiter.
Vielen Dank dafür.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Controls in Userform Ansprechen mit VBA


Schritt-für-Schritt-Anleitung

Um die Userform Controls in Excel VBA anzusprechen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Erstelle eine Userform in deinem VBA-Editor.

  2. Füge das folgende Code-Snippet in das Code-Fenster der Userform ein, um ToggleButtons dynamisch zu generieren:

    Private Sub UserForm_Initialize()
       For i = 1 To 100
           Set objToggleButton = Me.Controls.Add("Forms.ToggleButton.1", "ToggleButton" & i, True)
           With objToggleButton
               .Height = 20
               .Width = 50
               .Top = 10 + (i - 1) * 25
               .Left = 10
           End With
       Next i
    End Sub
  3. Zugriff auf die Eigenschaften und Events der ToggleButtons: Hier benötigst du eine Klasse, um die Events korrekt zu nutzen. Erstelle eine neue Klasse in deinem Projekt und nenne sie clsToggleButton.

    Option Explicit
    Public WithEvents ToggleButton As MSForms.ToggleButton
    
    Private Sub ToggleButton_Click()
       MsgBox "ToggleButton '" & ToggleButton.Name & "' wurde geklickt!"
    End Sub
  4. Initialisiere die Klasse in der Userform:

    Dim ToggleButtons() As clsToggleButton
    
    Private Sub UserForm_Initialize()
       ReDim ToggleButtons(1 To 100)
       For i = 1 To 100
           Set ToggleButtons(i) = New clsToggleButton
           Set ToggleButtons(i).ToggleButton = Me.Controls("ToggleButton" & i)
       Next i
    End Sub

Häufige Fehler und Lösungen

Fehler 1: ToggleButton reagiert nicht auf Klicks

  • Lösung: Stelle sicher, dass du eine Klasse erstellt hast, um die Events der ToggleButtons zu verwalten. Ohne die Klasse gibt es keinen Event-Handler.

Fehler 2: ToggleButtons werden nicht angezeigt

  • Lösung: Überprüfe, ob die Position und Größe der ToggleButtons korrekt eingestellt sind. Nutze .Top und .Left, um die Positionierung zu kontrollieren.

Alternative Methoden

Eine alternative Methode, um Userform Controls anzusprechen, ist die Verwendung von Arrays oder Sammlungen. Du kannst die Controls in einer Collection speichern und dann auf sie zugreifen:

Dim ToggleButtons As Collection

Private Sub UserForm_Initialize()
    Set ToggleButtons = New Collection
    For i = 1 To 100
        Dim objToggleButton As MSForms.ToggleButton
        Set objToggleButton = Me.Controls.Add("Forms.ToggleButton.1", "ToggleButton" & i, True)
        ToggleButtons.Add objToggleButton
    Next i
End Sub

Praktische Beispiele

Hier ist ein praktisches Beispiel, das zeigt, wie du die ToggleButtons in einer Userform ansprichst und deren Eigenschaften abänderst:

Private Sub ToggleButton1_Click()
    If ToggleButton1.Value Then
        ToggleButton1.Caption = "Aktiviert"
    Else
        ToggleButton1.Caption = "Deaktiviert"
    End If
End Sub

Diese Methode kann auf alle generierten ToggleButtons angewendet werden, um ihre Zustände zu ändern, basierend auf dem Benutzer-Input.


Tipps für Profis

  • Nutze Me.Controls für den Zugriff auf Controls innerhalb der Userform. Beispiel: Me.Controls("ToggleButton1").
  • Bei großen Userforms kann es hilfreich sein, die Controls in einer Collection oder einem Array zu speichern, um die Verwaltung zu erleichtern und die Performance zu verbessern.
  • Dokumentiere deine Klassen und deren Methoden gut, um die Wartbarkeit deines Codes zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich die Größe der Userform anpassen? Du kannst die Eigenschaften Width und Height der Userform im Eigenschaftenfenster anpassen oder im Code ändern:

Me.Width = 400
Me.Height = 300

2. Was tun, wenn die Userform nicht angezeigt wird? Stelle sicher, dass du den Befehl UserForm.Show verwendest, um die Userform anzuzeigen. Wenn du sie aus einem anderen Modul aufrufst, kann es zu Problemen kommen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige