Goedendag,
Ik heb een excel file met daarin 3 verschillende groepen selectievakjes (checkboxes). Boven elke groep staat een Alles-vakje.
Nu wil ik graag in VBA een code schrijven, dat als ik het Alles-vakje aanklik, alle andere in dezelfde groep geselecteerd dan wel gedeselecteerd worden.
Ook wil ik dat het selectievakje een intermediate status aanneemt (grijs vlakje) als sommige vakjes in de groep wel en andere niet geselecteerd zijn.
Ik heb de onderstaande code. Probleem is, deze werkt prima als ik de boel niet in groepen heb verdeeld maar dus niet na het groeperen.
De naam van het Alles-vakje is "BG"
De groep heet "grpBG"
De rest van de vakjes in de groep heten "chkbox1", "chkbox2", "chkbox3", "chkbox4", "chkbox5".
De "Sub BG_SelectAll_Click()" hangt als macro aan selectievakje "Alles"
De "Sub BG_Mixed_State()" hangt als macro aan alle overige vakjes in de groep.
Tot slot, het zijn formulier-vakjes dus geen ActiveX.
Als het voor één groep werkt, dan kan ik het natuurlijk zelf aanpassen voor de andere groepen
Hoop dat er iemand kan helpen.
Arjan
Ik heb een excel file met daarin 3 verschillende groepen selectievakjes (checkboxes). Boven elke groep staat een Alles-vakje.
Nu wil ik graag in VBA een code schrijven, dat als ik het Alles-vakje aanklik, alle andere in dezelfde groep geselecteerd dan wel gedeselecteerd worden.
Ook wil ik dat het selectievakje een intermediate status aanneemt (grijs vlakje) als sommige vakjes in de groep wel en andere niet geselecteerd zijn.
Ik heb de onderstaande code. Probleem is, deze werkt prima als ik de boel niet in groepen heb verdeeld maar dus niet na het groeperen.
Code:
Sub BG_SelectAll_Click()
Dim CB As CheckBox
For Each CB In ActiveSheet.CheckBoxes
If CB.Name <> ActiveSheet.CheckBoxes("BG").Name Then
CB.Value = ActiveSheet.CheckBoxes("BG").Value
End If
Next CB
End Sub
-------------------------------------------------------------------------------------------------------------------------------
Sub BG_Mixed_State()
Dim CB As CheckBox
For Each CB In ActiveSheet.CheckBoxes
If CB.Name <> ActiveSheet.CheckBoxes("BG").Name And CB.Value <> ActiveSheet.CheckBoxes("BG").Value And ActiveSheet.CheckBoxes("BG").Value <> 2 Then
ActiveSheet.CheckBoxes("BG").Value = 2
Exit For
Else
ActiveSheet.CheckBoxes("BG").Value = CB.Value
End If
Next CB
End Sub
De groep heet "grpBG"
De rest van de vakjes in de groep heten "chkbox1", "chkbox2", "chkbox3", "chkbox4", "chkbox5".
De "Sub BG_SelectAll_Click()" hangt als macro aan selectievakje "Alles"
De "Sub BG_Mixed_State()" hangt als macro aan alle overige vakjes in de groep.
Tot slot, het zijn formulier-vakjes dus geen ActiveX.
Als het voor één groep werkt, dan kan ik het natuurlijk zelf aanpassen voor de andere groepen

Hoop dat er iemand kan helpen.
Arjan