清除特定列中的复选框

时间:2014-05-16 23:21:49

标签: excel excel-vba checkbox vba

我尝试创建一个宏来清除两个特定列中的所有复选框(每列大约有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

1 个答案:

答案 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控件执行类似操作。