我尝试创建一个宏来清除两个特定列中的所有复选框(每列大约有40个复选框)。这就是我所拥有的:
Worksheets("Roster").Column(5).CheckBoxes.Value = False
Worksheets("Roster").Column(7).CheckBoxes.Value = False
我也试过这个:
ActiveSheet.Column(5).CheckBoxes.Value = False
ActiveSheet.Column(7).CheckBoxes.Value = False
答案 0 :(得分:1)
CheckBoxes不是列的成员。
如果它们是表单控件,则它们属于工作表的CheckBoxes
集合。如果ActiveX控件属于工作表的OLEObjects
集合,但也可以通过工作表的Shapes
集合进行访问。
在任何一种情况下,您都可以通过它们的索引号(CheckBoxes(1),OLEObjects(1))或它们的名称来引用它们。
如果它们是表单控件,那么您可以使用以下代码找到与特定列链接的链接(LinkedCell):
Dim ckb As Object
Dim sLinked As String
For Each ckb In ActiveSheet.CheckBoxes
sLinked = ckb.LinkedCell
If sLinked <> "" Then
'.. there is a LinkedCell
If Range(sLinked).Column = 5 Or Range(sLinked).Column = 7 Then
Debug.Print "found one.."
Range(sLinked).Value = False
End If
End If
Next ckb
请注意,这会更改链接单元格中的值,而不是控件本身。
应该可以使用ActiveX控件执行类似操作。