Clever-Excel-Forum

Normale Version: Checkboxen variabel auslesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Excelgemeinde,

ich wende mich mit einem Problem an Euch für das ich selbst nach längerer Recherche keine mir verständliche Lösung gefunden habe.

Zum Problem:

Ich möchte in einer Schleife eine Abfrage durchführen und bei einem entsprechenden Ergebnis eine msgBox aufrufen. 
Der unten stehende Code tut das bereits, aber noch ohne Schleife. Der erste Durchlauf der Schleife soll die Checkboxen 11 bis 15,
der zweite Durchlauf die Checkboxen 21 bis 25 usw. bis zu den Checkboxen 71-75 abfragen.
Meine Idee war mit eine For-Schleife die die Checkbox anzusprechen. Die Schreibweise wäre dann etwa so: Userform1.Checkbox(x)1, usw.
Ich gehe davon aus, dass dies zu einfach wäre.

Weiß jemand Rat?

Für Eure Hilfe wie immer vielen Dank im voraus.

Code:
'Abfrage ob Checkbox und Textbox befüllt sind. Wenn ja, dann wird das Kontrollkästchen deaktiviert
If UserForm1.CheckBox11 Or UserForm1.CheckBox12 Or UserForm1.CheckBox13 Or UserForm1.CheckBox14 Or UserForm1.CheckBox15 = Enabled Then
If TextBox1 <> "" Then
MsgBox "Bitte entweder einen Haken setzen oder das Textfeld befüllen!" & vbCrLf & "Es wurde der Inhalt der Textbox übernommen."
UserForm1.CheckBox11.Value = False
UserForm1.CheckBox12.Value = False
UserForm1.CheckBox13.Value = False
UserForm1.CheckBox14.Value = False
UserForm1.CheckBox15.Value = False
UserForm1.CheckBox16.Value = False
End If
End If


Gruß

tmessers
Hallo,

mehrere Objekte eines UserForm kannst du in dieser Weise mit einer Schleife abarbeiten:


Code:
Dim s As Integer
For s = 1 To 5
   Controls("OptionButton" & s).Caption = Cells(s, 1)
Next s
Hallo Klaus-Dieter,

ich habe nach Deinem Tipp meinen Code angepasst.
Leider funktioniert er nicht. Bei der Ausführung erscheint die Meldung "Fehler beim Kompilieren" " Sub oder Functoon nicht definiert".
"Controls ist dabei hervorgehoben.
Wo liegt der Fehler in meinem Code?



Code:
Dim s As Integer
For s = 1 To 7
   If Controls("CheckBox" & s & "1").Value Or _
   Controls("CheckBox" & s & "2").Value Or _
   Controls("CheckBox" & s & "3").Value Or _
   Controls("CheckBox" & s & "4").Value Or _
   Controls("CheckBox" & s & "5").Value Or _
   Controls("CheckBox" & s & "6").Value = Enabled Then
   If TextBox1 <> "" Then
MsgBox "Bitte entweder einen Haken setzen oder das Textfeld befüllen!" & vbCrLf & "Es wurde der Inhalt der Textbox übernommen."
Controls("CheckBox" & s & "1").Value = False
Controls("CheckBox" & s & "2").Value = False
Controls("CheckBox" & s & "3").Value = False
Controls("CheckBox" & s & "4").Value = False
Controls("CheckBox" & s & "5").Value = False
Controls("CheckBox" & s & "6").Value = False
End If
End If

Next s
Hallo,

heißen bei dir die Checkboxen Checkbox11, Checkbox12, Checkbox13 usw. ?
Hallo,

(03.11.2017, 09:58)Steffl schrieb: [ -> ]heißen bei dir die Checkboxen Checkbox11, Checkbox12, Checkbox13 usw. ?
siehe Eröffnungsbeitrag. Wink

@tmessers

Klaus-Dieter vergaß leider das Voranstellen des die Controls beinhaltenden Userforms. Um unabhängig vom gerade vergebenen Namen des Userforms zu sein, nimmt man das Schlüsselwort Me.

Das könnte dann so etwa aussehen (Ich bin mir aber nicht sicher, ob ich Dein Vorhaben zu 100% verstanden habe.):

  Dim lngEiner As Long, lngZehner As Long
 For lngZehner = 1 To 7
   For lngEiner = 1 To 6
     If Me.Controls("CheckBox" & lngZehner & lngEiner).Value Then
       Exit For
     End If
   Next lngEiner
   If lngEiner < 7 Then
     If TextBox1 <> "" Then
       MsgBox "Bitte entweder einen Haken setzen oder das Textfeld befüllen!" & vbCrLf & "Es wurde der Inhalt der Textbox übernommen."
       For lngEiner = 1 To 6
         Me.Controls("CheckBox" & lngZehner & lngEiner).Value = False
       Next lngEiner
     End If
   End If
 Next lngZehner

Gruß Uwe
Hallo Uwe,

Zitat:Voranstellen des die Controls beinhaltenden Userforms

nein hat er nicht. Ich gehe davon aus, dass Quelltexte die mit Objekten des UserForm zu tun haben, auch im Modul des Userform stehen. Dann ist das so überflüssig, wie ein Kropf.
Hallöchen,

nicht ganz so absolutistisch Smile
Zitat:Ich gehe davon aus, dass Quelltexte die mit Objekten des UserForm zu tun haben, auch im Modul des Userform stehen.

Da könnten wir jetzt aber auch drüber philosophieren, wann man so vorgehen sollte und wann andere Vorgehensweisen auch nicht verkehrt sind - aber damit werfen wir den TE eventuell aus dem Rennen Sad
Danke für Eure Hilfe,

ihr habt mit Euren Antworten meinen VBA-Horizont erweitert und bei der Lösungmeins Problems geholfen. Danke an alle. Bis zum nächsten Problem. ?