Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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

Checkbox - Alles auswählen

Checkbox - Alles auswählen
21.09.2018 11:20:49
JSExcel
Hallo,
ich habe bei einer Userform eine Listbox (Sytle: fmMultiSelectExtended) mit 3 Elemeten A, B, C. Darunter befindet sich eine Checkbox ("Alle auswählen"), die bei Klick alle Elemente in der Listbox auswählt. Wenn ich den Haken bei der Checkbox entferne, wird die Auswahl in der Listbox wieder aufgehoben. Soweit funktioniert das auch gut.
Nun zu meinem Problem:
Nehmen wir an ich habe die Checkbox aktiviert und es sind folglich alle Elemente ausgewählt worden. Wenn der Benutzer nun in die Listbox klickt, wird die Auswahl aufgehoben und nur noch das Element, auf das der User geklickt hat, ist ausgewählt. Nun steht aber weiterhin das Häkchen in der Checkbox, obwohl nicht alle Element ausgewählt sind. Dies sollte logischerweise verschwinden, sobald nicht alle Elemente in der Listbox ausgewählt wurden bzw. automatisch erscheinen, wenn der User alle Elemente manuell über die Listbox auswählt.
Für die Checkbox habe ich bis dato folgenden Code, der auch funktioniert. Bei allem anderen komme ich i-wie jedes Mal mit dem Change Event der Listbox in Bedrängnis:
Dim i As Integer
If Me.CheckBox1.Value = True Then
For i = 0 To Me.ListBox1.ListCount - 1
Me.ListBox1.Selected(i) = True
Next i
Else
For i = 0 To Me.ListBox1.ListCount - 1
Me.ListBox1.Selected(i) = False
Next i
End If
Wäre wie immer super, wenn jemand eine Idee hätte, wie man das sauber steuern könnte.
Viele Grüße,
Jo

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Checkbox - Alles auswählen
21.09.2018 11:28:10
Werner
Hallo Jo,
schon mal das Click-Event deiner Listbox verwendet und vor dem Ändern der Checkbox die Events ausgeschaltet?
Private Sub ListBox1_Click()
Application.EnableEvents = False
Me.CheckBox1 = False
Application.EnableEvents = True
End Sub
Gruß Werner
AW: Checkbox - Alles auswählen
21.09.2018 11:34:09
JSExcel
Hallo Werner,
vielen Dank erstmal für die Antwort. Ich habe es gerade ausprobiert, ich bekomme keinen Fehler, jedoch bleibt das Häkchen in der Checkbox weiterhin gesetzt, wenn ich etwas in der Listbox auswähle.
Viele Grüße,
Jo
AW: Checkbox - Alles auswählen
21.09.2018 11:54:21
Werner
Hallo Jo,
nimm das Enter Event der Listbox
Private Sub ListBox1_Enter()
Me.CheckBox1 = False
End Sub
Gruß Werner
Anzeige
AW: Checkbox - Alles auswählen
21.09.2018 12:23:41
JSExcel
Hallo Werner,
super genau das war es :-). Ich habe jetzt nur ein letztes Problem:
Die Liste ist ja vom Sytle Extended, d.h. der User könnte über gedrückte SHIFT-Taste alle Einträge manuell auswählen. Sobald dies passiert, sollte wieder das Häkchen in der Checkbox erscheinen. Das passiert bis jetzt leider noch nicht.
Wäre super, wenn du hierfür auch noch einen Ansatz hast. Vielen Dank.
Jo
AW: Checkbox - Alles auswählen
21.09.2018 12:36:16
Rudi
Hallo,
dann musst du bei jedem Klick alle Einträge prüfen
Schema
dim blnALL as Boolean, i as integer
blnALL = True
for i=0 to listbox1.listcount-1
blnALL=blnAll and Listbox1.selected(i)
next i
Checkbox1=blnAll
Gruß
Rudi
Anzeige
Events aus in UF?
21.09.2018 12:45:02
Rudi
Hallo,
hat doch gar keine Wirkung.
Gruß
Rudi
AW: Checkbox - Alles auswählen
21.09.2018 13:07:37
Rudi
Hallo,
nur als Hinweis:
 Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
ListBox1.Selected(i) = CheckBox1
Next i

reicht vollkommen aus.
Gruß
Rudi
AW: Checkbox - Alles auswählen
21.09.2018 13:34:21
JSExcel
Hallo Rudi,
auch dir Danke für die Antwort. Anbei vielleicht nochmal der komplette Code bis hierhin. Es funktioniert soweit alles, NUR verschwindet das Häkchen nicht aus der Checkbox nachdem ich alle Elemente über SHIFT + Maus ausgewählt habe und dann erneut auf EIN Element in der Listbox klicke. Hier greift anscheinend das ENTER Event nicht mehr, welches das Häkchen in diesem Fall entfernt.

Private Sub CheckBox1_Click()
Dim i As Integer If Me.CheckBox1.Value = True Then For i = 0 To Me.ListBox1.ListCount - 1 Me.ListBox1.Selected(i) = True Next i Else For i = 0 To Me.ListBox1.ListCount - 1 Me.ListBox1.Selected(i) = False Next i End If End Sub

Private Sub ListBox1_Change()
Dim i As Integer Dim selectedItems As Integer For i = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.Selected(i) = True Then selectedItems = selectedItems + 1 End If Next i If selectedItems = Me.ListBox1.ListCount Then CheckBox1 = True End If End Sub

Private Sub ListBox1_Enter()
Me.CheckBox1 = False End Sub

Private Sub UserForm_Initialize()
With Me.ListBox1 .AddItem "A" .AddItem "B" .AddItem "C" End With End Sub
Anzeige
AW: Checkbox - Alles auswählen
21.09.2018 13:47:16
Daniel
Hi
Probier mal die Events MouseUp und ggf KeyUp, falls jemand mit der Tastatur arbeitet.
Grus Daniel
AW: Checkbox - Alles auswählen
21.09.2018 13:53:20
Rudi
Hallo,
Private Sub ListBox1_Change()
Dim i As Integer
Dim selectedItems As Integer
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
selectedItems = selectedItems + 1
End If
Next i
CheckBox1 = selectedItems = Me.ListBox1.ListCount 
End Sub

Gruß
Rudi
AW: Checkbox - Alles auswählen
21.09.2018 14:14:13
JSExcel
Hi Daniel,
das war nochmal ein super Hinweis. Habe allerdings MouseDown jetzt verwendet.
Sollte das i-wann einmal jemand brauchen. Hier nochmal der komplette Code. Vielen Dank an Euch:
Private Sub CheckBox1_Click()
Dim i As Integer
If Me.CheckBox1.Value = True Then
For i = 0 To Me.ListBox1.ListCount - 1
Me.ListBox1.Selected(i) = True
Next i
Else
For i = 0 To Me.ListBox1.ListCount - 1
Me.ListBox1.Selected(i) = False
Next i
End If
End Sub

Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
Me.CheckBox1 = False
End Sub

Private Sub ListBox1_Change()
Dim i As Integer
Dim selectedItems As Integer
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
selectedItems = selectedItems + 1
End If
Next i
If selectedItems = Me.ListBox1.ListCount Then
CheckBox1 = True
End If
End Sub

Private Sub UserForm_Initialize()
With Me.ListBox1
.AddItem "A"
.AddItem "B"
.AddItem "C"
End With
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige