Datenschutzerklärung


Direktnachricht



Ihre Software
Details
Excel/VBA 🔍
Add-Ins

Suche in Beispielen und Tipps zu Excel und VBA

Suchbegriff(e) mit Leerzeichen getrennt:

Checkboxes in SchleifeMakro/Sub/Prozedur

Kategorie: Steuerelemente ▸ Userform

(Tipp 87) Nachricht zum Beitrag an Autor Nach oben

Wie kann man alle CheckBoxes einer UserForm in eine For/Next-Schleife einbinden?

Der Code durchläuft alle Elemente der Userform und wenn der Typ eine Checkbox ist, wird die Caption geändert.

Private Sub UserForm_Initialize() Dim ChBox As Control Dim intI As Integer For Each ChBox In UserForm1.Controls If UCase(TypeName(ChBox)) = "CHECKBOX" Then intI = intI + 1 ChBox.Caption = "MeineCheckbox " & intI End If Next ChBox End Sub

Es gibt noch andere Möglichkeiten. Wer seine Steuerelemente konsequent benennt und als Präfix eine eindeutige Zeichenfolge (z. B. chkMeineBox) verwendet, kann auch das abfragen. Oder wenn die Steuerelemente per Tag-Eigenschaft gruppiert sind, geht das natürlich auch. Und die höhere Kunst wäre eine eine eigene Klasse für die Elemente.

Während der Laufzeit einer Userform für jeden Tag eines Monats eine Checkbox hinzufügenMakro/Sub/Prozedur

Kategorie: Steuerelemente ▸ Userform

(Tipp 568) Nachricht zum Beitrag an Autor Nach oben

Wie kann ich während der Laufzeit einer Userform für jeden Tag eines Monats eine Checkbox hinzufügen?

Ausschlaggebend ist hier intTopPosition. Damit wird die erste Position auf 20 gesetzt und anschließend für jede Box erhöht - damit gibt man also die Position der Box vor. Wenn es zweispaltig werden soll, muss entsprechend bei einem bestimmten Schleifendurchlauf wieder auf 20, aber auch die Left-Position nach rechts gesetzt werden.

Private Sub CommandButton1_Click() Dim ctrCheck As Control Dim datStartDatum As Date Dim datZaehler As Date Dim intTopPosition As Integer Dim strMonat As String strMonat = "Februar" datStartDatum = CDate("1." & strMonat & ".2010") intTopPosition = 20 datZaehler = datStartDatum Do While Month(datZaehler) = Month(datStartDatum) Set ctrCheck = Me.Controls.Add("forms.CheckBox.1") ctrCheck.Top = intTopPosition ctrCheck.Caption = Format(datZaehler, "dd.MM.yy") Set ctrCheck = Nothing intTopPosition = intTopPosition + 15 datZaehler = datZaehler + 1 Loop End Sub

Die Eigenschaften der neu erstellten Steuerelemente kann man z. B. wie folgt aufrufen:

Private Sub CommandButton2_Click() MsgBox UserForm1.Controls("CheckBox5").Value End Sub