select/取消选中GroupBox中的所有checkbox

我试图build立一个Excel,在用户从一系列checkbox中select一个checkbox(在一个groupbox),每个checkbox将显示一个新的checkbox(无论是列表框或groupbox,无论你认为更合适)的select,然后根据他们的最终select,生成/显示相关标签供他们阅读。

我很难得到一个select/取消全选button。 这是我到目前为止,没有太多的运气。 如果有人能帮助,我会非常感激。

Sub Tickall() Dim CB As CheckBox Dim OB As OptionButton If ActiveSheet.OB.GroupBox.GroupBox1.CheckBoxes("Check Box 21").Value Then For Each CB In ActiveSheet.OB.GroupBox1.GroupBox1.CheckBoxes If CB.name <> ActiveSheet.OB.GroupBox1.CheckBoxes("Check Box 21").name Then CB.Value = True End If Next CB End If End Sub 

GroupBoxes似乎没有一个控件属性为For Each。 我可以看到确定CheckBox是否在GroupBox中的唯一方法是检查它是否在物理上。 我希望这不是正确的答案,还有一些更优雅的方式,但是这里有一个例子

 Public Sub TickAll() Dim gb As GroupBox Dim cb As CheckBox Dim cbAll As CheckBox Set gb = Sheet1.GroupBoxes(1) Set cbAll = Sheet1.CheckBoxes("Check Box 6") For Each cb In Sheet1.CheckBoxes If IsInGroupBox(cb, gb) Then cb.Value = cbAll.Value End If Next cb End Sub Public Function IsInGroupBox(ByRef cb As CheckBox, ByRef gb As GroupBox) IsInGroupBox = cb.Top > gb.Top And _ cb.Top < gb.Top + gb.Height And _ cb.Left > gb.Left And _ cb.Left < gb.Left + gb.Width End Function 

未经testing,但我相信这是你在找什么

 ActiveSheet.CheckBoxes.Value = xlOff ActiveSheet.CheckBoxes.Value = xlOn