Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

CheckBoxen ansprechen mit Schleife

CheckBoxen ansprechen mit Schleife
19.05.2023 15:29:53
Thomas

Guten Tag,

Was einfach aussieht artet in einem Desaster aus.

Also ich habe in einer Tabelle Checkboxen wo ich per mausklick Häkchen setzen kann.
Da ich die per VBA überwachen will versuchte ich einmal Checkboxen anzusprechen und das funktionier ja auch bestens.

Nun da es aber ca. 30 Kästchen sind wo ich automatisch prüfen will und dann über eine IF Verzweigung etwas entschieden wird, dachte ich das ich das mit einer For Schleife löse.

Trotz den Beispielen aus dem netzt springt mir das Skript nicht an.

Kann mir da vielleicht jemand weiter helfen?

Ein Grund Skript mit einer For Schleife die mir ein Kästchen nach dem anderen prüfen kann.
Die Namen der Kästchen sind ja standardmäßig vergeben und heissen Kontrollkästchen 1 usw, dieses kann ich aber auch noch ändern.

Danke für einen Vorschlag im Voraus

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CheckBoxen ansprechen mit Schleife
19.05.2023 15:41:48
Fennek
Hallo,

ein Beispielcode:


Sub T_1()
Dim ChBx As CheckBox

For Each ChBx In ActiveSheet.CheckBoxes
    Debug.Print ChBx.Name, ChBx.Value
   
Next ChBx
End Sub
mfg


AW: CheckBoxen ansprechen mit Schleife
19.05.2023 15:52:40
Thomas
Hallo und danke. Genau der Beispiels Code hat es jetzt gebraucht um zu sehen wo ich den Fehler gemacht habe. Das Ansprechen vom Objekt ist in den Foren im Netzt demnach auch schon sehr veraltet. Auf jeden Fall jetzt funktioniert es. Danke.


AW: CheckBoxen ansprechen mit Schleife
19.05.2023 16:34:25
Thomas
Hallo Fennek,

ich habe damit mal etwas versucht. Ohne grosse Worte zum Skript, wieso läuft das nicht? Tabelle2 und Boxen sind angelegt.

Sub test()
Dim ChBx As CheckBox

For Each ChBx In ActiveSheet.CheckBoxes
If ChBx.Value = 1 Then
MsgBox "hallo"
Worksheets("Tabelle2").CheckBoxes.ChBx.Value = 1
Else
MsgBox "Leer"
End If

    'Debug.Print ChBx.Name, ChBx.Value
   
Next ChBx



End Sub
Thomas


Anzeige
AW: CheckBoxen ansprechen mit Schleife
19.05.2023 19:30:15
Fennek
Hallo,

"ChBx" ist ein "Platzhalter", der in jedem Durchgang der Schleife einen neuen Wert annimmt, z.B. "Chechbox1", "Checkbox2", usw.

Jedenfalls gibt es das nicht in der anderen Tabelle. Vielleicht ginge


Worksheets("Tabelle2").CheckBoxes.CheckBox1.Value = 1
also ein gültiger Name einer Checkbox in Tabelle 2. Falls es eine identische Anzahl mit gleichen Namen geben würde:


Worksheets("Tabelle2").CheckBoxes(Chbox.name).Value = 1
ungeprüft

mfg


AW: CheckBoxen ansprechen mit Schleife
19.05.2023 19:48:48
Thomas
Hallo Fennek,

Worksheets("Tabelle2").CheckBoxes(Chbox.name).Value = 1

Ich denke das könnte gehen, an dem studiere ich auch herum, komme aber noch nicht daran es auszuprobieren.

Ja es sind zwei Tabellen mit den identischen Checkboxennamen und gleicher Anzahl Boxen.

Darum will ich sowas aufbauen, eine Prüfung, wenn in der Tabelle1 ein hacken ist, soll er in der Tabelle 2 in der selben Box auch ein Haken gemacht werden und auch wieder rückgängig gemacht werden wenn ich den Haken raus nehme.

Fühle mich wegen einem Problem das ich erkannt habe gezwungen sowas zu basteln.
Ich habe diese Boxen auf der Tabelle schon fix so verknüpft das diese miteinander korrespondieren. Da es aber vorkommt dass ich einzelne Tabellen in eine andere Arbeitsmappe einfüge, kommen dann Meldungen wegen externen Verknüpfungen. Und das ist unschön. Also muss ich diese Überwachung wohl oder übel mit reinem VBA lösen.

Es grüsst
Thomas




Anzeige
AW: CheckBoxen ansprechen mit Schleife
19.05.2023 20:12:56
Fennek
Hallo,

es gibt 2 Sheets mit der gleichen Anzahl und Namen der Checkboxen

Werte von sheet 1 sollen nach Sheet 2 übertragen werden:

Im Code von Tabelle 1


Sub Sync_Sh2()
Dim ChBx As CheckBox

For Each ChBx In Me.CheckBoxes
    Sheets(2).CheckBoxes(ChBx.Name) = ChBx.Value
Next ChBx
End Sub
geprüft

https://www.herber.de/bbs/user/159246.xlsm


AW: CheckBoxen ansprechen mit Schleife
20.05.2023 10:11:47
Thomas
Guten Morgen Fennek,

danke für Deine Hilfe.
Habe es jetzt so für mich angepasst. Da nicht alle Kontrollkästchen überprüft werden müssen oder dürfen.

Sub Sync_Sh3()
Dim ChBx As CheckBox

For Each ChBx In Me.CheckBoxes

  If Not Left(ChBx.Name, 2) = "CB" Then GoTo weiter '...Wenn in CheckBox die ersten zwei Zeichen CB.... dann

   Sheets(2).CheckBoxes(ChBx.Name) = ChBx.Value '.......In Sheets2 CheckBox aktualisieren

weiter: '...............................................Wenn in CheckBox die zwei ersten Zeichen nicht CB sind dann Schleife überspringen
Next ChBx
End Sub
Es läuft so


Anzeige
AW: CheckBoxen ansprechen mit Schleife
20.05.2023 10:23:02
GerdL
Hallo Thomas,

die doppelte Verneinung ist wie eine Zustimmung.

Sub Sync_Sh3()

    Dim ChBx As CheckBox
    
    For Each ChBx In Me.CheckBoxes
    
       If Left(ChBx.Name, 2) = "CB" Then '...Wenn in CheckBox die ersten zwei Zeichen CB.... dann
           Sheets(2).CheckBoxes(ChBx.Name) = ChBx.Value '.......In Sheets2 CheckBox aktualisieren
       End If
    
    Next ChBx

End Sub
Gruß Gerd


AW: CheckBoxen ansprechen mit Schleife
20.05.2023 11:12:00
Thomas
Hallo Gerd,
musste das gleich mal ausprobieren, ist ja immer gut wenn man den Code möglichst klein halten kann.
Ja und jetzt funktioniert es auch so. Ist für mich jetzt gerade etwas irritierend, weil zu Beginn habe ich das selbe gemacht wie Du. Nur die If Verzweigung hatte bei mir dann auch alle CheckBoxen bearbeitet die nicht mit CB deklariert gewesen sind.

End If unter dem Next hatte ich glaub nicht, da dieses ja ein Schleifenfehler auslösen würde.

Danke auf jeden Fall
Gruss Thomas

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige