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

Checkboxes dynamisch erzeugen

Forumthread: Checkboxes dynamisch erzeugen

Checkboxes dynamisch erzeugen
08.12.2004 19:39:40
Choros
Hallo,
ich möchte mehrere Checkboxes auf einem Frame in einem Userform dynamisch erstellen. Dabei soll der Benutzer die Anzahl der Checkboxes festlegen. Beispiel: Wenn der User 8 eingibt, sollen auf dem Frame 8 checkboxes erscheinen. Mit dem folgenden Code habe ich zwar einen Checkbox erzeugen können:
Dim MyCheckBox As msforms.CheckBox
Set MyCheckBox = Laufzettel.Frame7.Controls.Add("Forms.CheckBox.1", , True)
Ich schaffe aber nicht mehrere Checkboxes zu erzeugen
Kann mir jemand da helfen?
Danke.
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Checkboxes dynamisch erzeugen
Ramses
Hallo
kopier den Code in eine leere Userform und öffne diese dann

Private Sub UserForm_Initialize()
'Variablen setzen
Dim plTop As Integer, plHeight As Integer, plWidth As Integer, plLeft As Integer
Dim ufHeigth As Integer, ufWidth As Integer
Dim hSpace As Integer, vSpace As Integer
Dim i As Integer, n As Integer
Dim MyCtrl As Control
Dim txtBox1 As Integer, txtBox2 As Integer
'Userform erstellen
vSpace = 5
hSpace = 5
plTop = 5
plWidth = 50
plHeight = 15
plLeft = 10
'userformgrösse abfragen
txtBox1 = InputBox("Wieviele Textboxen möchten Sie erstellen", "Initialisierung", 50)
If txtBox1 Mod 10 <> 0 Then
MsgBox "auf die Schnelle nur mit geraden Zahlen"
Exit Sub
End If
If txtBox > 100 Then
MsgBox "Soviele sollten es nicht sein ;-)"
Exit Sub
End If
txtBox2 = InputBox("Wieviele Textboxen sollen untereinander stehen", "Initialisierung", Int(txtBox1 / 5))
If txtBox > txtBox1 Then
MsgBox "Das sind mehr als erstellt werden sollen ;-)"
Exit Sub
End If
ufHeigth = ((txtBox2 * plHeight) + ((txtBox2 * vSpace) + (4 * vSpace))) + 40
ufWidth = (Int((txtBox1 / 10)) * plWidth) + (Int((txtBox1 / 10)) * 10) + (4 * hSpace)
Debug.Print "Höhe: " & ufHeigth
Me.Height = ufHeigth
Me.Width = ufWidth
For i = 1 To (txtBox1 / txtBox2)
For n = 1 To txtBox2
Set MyCtrl = Controls.Add("Forms.Textbox.1")
MyCtrl.Left = plLeft
MyCtrl.Top = plTop
MyCtrl.Width = plWidth
MyCtrl.Height = plHeight
MyCtrl.name = "Textbox" & i
plTop = plTop + plHeight + 5
Next n
plTop = 5
plLeft = plLeft + plWidth + hSpace
Next i
'Schaltfläche hinzufügen
Debug.Print "Top: " & ufHeigth - (2 * plHeight + 20)
Set MyCtrl = Controls.Add("Forms.textbox.1")
MyCtrl.Left = 2 * vSpace
MyCtrl.Top = ufHeigth - (2 * plHeight + 20)
MyCtrl.Width = (3 * plWidth) + (2 * plWidth)
MyCtrl.Height = plHeight
MyCtrl.name = "txtLabel" & i
MyCtrl.Value = "That's real VBA Life ;-)"
End Sub

Dies ist nur ein Beispiel wie es mit Textboxen geht und der problematik der Platzierung.
Mit etwas Willen kannst du das sicher an deine Bedürfnisse anpassen
Viel Spass
Gruss Rainer
Anzeige
;
Anzeige

Infobox / Tutorial

Dynamisches Erstellen von Checkboxes in Excel VBA


Schritt-für-Schritt-Anleitung

Um mehrere Checkboxes dynamisch in einem Userform zu erstellen, kannst du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es dem Benutzer, die Anzahl der gewünschten Checkboxes anzugeben.

  1. Öffne den VBA-Editor (drücke ALT + F11 in Excel).
  2. Füge eine neue Userform hinzu.
  3. Kopiere den folgenden Code in das Codefenster der Userform:
Private Sub UserForm_Initialize()
    Dim plTop As Integer, plHeight As Integer, plWidth As Integer, plLeft As Integer
    Dim checkboxCount As Integer
    Dim MyCheckBox As msforms.CheckBox

    ' Werte für die Platzierung und Größe der Checkboxes festlegen
    plTop = 10
    plLeft = 10
    plWidth = 100
    plHeight = 15

    ' Anzahl der Checkboxes abfragen
    checkboxCount = InputBox("Wie viele Checkboxes möchten Sie erstellen?", "Checkbox Anzahl")

    For i = 1 To checkboxCount
        Set MyCheckBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox" & i, True)
        MyCheckBox.Caption = "Checkbox " & i
        MyCheckBox.Top = plTop
        MyCheckBox.Left = plLeft
        plTop = plTop + plHeight + 5   ' Abstand zwischen den Checkboxes
    Next i
End Sub
  1. Schließe den VBA-Editor und starte das Userform. Gib die Anzahl der Checkboxes ein und klicke auf "OK".

Häufige Fehler und Lösungen

  • Fehler: Keine Checkboxes erscheinen.

    • Lösung: Stelle sicher, dass der Code im UserForm_Initialize-Ereignis korrekt platziert ist. Prüfe auch die Namen der Controls, um Konflikte zu vermeiden.
  • Fehler: Die Anzahl der Checkboxes wird nicht akzeptiert.

    • Lösung: Achte darauf, dass die Eingabe für die Checkboxes eine positive ganze Zahl ist. Implementiere eine Validierung, um ungültige Eingaben abzufangen.

Alternative Methoden

Eine alternative Methode zur Erstellung von Checkboxes könnte die Verwendung eines Arrays sein, um die Checkboxes zu verwalten. Dies ermöglicht eine einfachere Handhabung und Anpassung.

Dim CheckBoxes() As msforms.CheckBox
ReDim CheckBoxes(1 To checkboxCount)

For i = 1 To checkboxCount
    Set CheckBoxes(i) = Me.Controls.Add("Forms.CheckBox.1", "CheckBox" & i, True)
    CheckBoxes(i).Caption = "Checkbox " & i
    CheckBoxes(i).Top = plTop
    CheckBoxes(i).Left = plLeft
    plTop = plTop + plHeight + 5
Next i

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du den Code anpassen kannst, um beispielsweise Checkboxes in einer bestimmten Anordnung zu platzieren oder mit spezifischen Eigenschaften zu versehen.

MyCheckBox.BackColor = RGB(255, 255, 255) ' Setzt den Hintergrund auf Weiß
MyCheckBox.Font.Bold = True ' Setzt die Schrift auf fett

Diese Anpassungen helfen, das Userform ansprechender zu gestalten und die Benutzerfreundlichkeit zu erhöhen.


Tipps für Profis

  • Verwende Schleifen: Nutze Schleifen effizient, um die Anzahl der Controls zu steuern und zu platzieren.
  • Benennungskonventionen: Achte darauf, eine konsistente Benennung für die Controls zu verwenden, um die Wartung des Codes zu erleichtern.
  • Debugging: Nutze Debug.Print, um Variablenwerte während der Laufzeit zu überprüfen und Fehler zu identifizieren.

FAQ: Häufige Fragen

1. Wie kann ich die Größe der Checkboxes ändern?
Du kannst die Größe der Checkboxes anpassen, indem du die Width- und Height-Eigenschaften des MyCheckBox-Objekts änderst.

2. Ist dieser Code mit allen Excel-Versionen kompatibel?
Ja, der bereitgestellte Code sollte in den meisten aktuellen Versionen von Excel funktionieren, die VBA unterstützen. Stelle sicher, dass die Referenzen auf MSForms korrekt sind.

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