Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Checkboxen variabel auslesen
#1
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
Antworten Top
#2
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
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • tmessers
Antworten Top
#3
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
Antworten Top
#4
Hallo,

heißen bei dir die Checkboxen Checkbox11, Checkbox12, Checkbox13 usw. ?
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • tmessers
Antworten Top
#5
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • tmessers
Antworten Top
#6
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.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • tmessers
Antworten Top
#7
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#8
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. ?
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste