选中复选框以选中并取消选中电子表格中的所有其他复选框

时间:2013-03-08 19:06:20

标签: excel excel-vba vba

我有一个电子表格,可以使用每个订单项的复选框来提取订单项。我想在顶部放置一个复选框,在选中/取消选中时,将选中并取消选中电子表格中的所有其他复选框。以下是我到目前为止的代码,如果选中了“Check Box 1”,它将选中所有复选框,但如果取消选择它将不会取消选中它们。如果取消选中“复选框1”,我还需要添加什么才能取消选中框。谢谢你的帮助。

Sub SelectAllCheckBox()
Dim CB As CheckBox
If ActiveSheet.CheckBoxes("Check Box 1").Value Then
    For Each CB In ActiveSheet.CheckBoxes
        If CB.Name <> ActiveSheet.CheckBoxes("Check Box 1").Name Then
            CB.Value = True
        End If
    Next CB
End If
End Sub

我也遇到了另一个问题。我有一个宏来清除表单,因此可以运行不同的宏。此宏中包含删除所有复选框的代码。如何使用代码使其不删除“Check Box 1”。这是我的代码。

Sheets("Quote Sheet").Select
Range("D3:D7").Select
Selection.ClearContents
Rows("11:1000").Select
Selection.Delete Shift:=xlUp
ActiveSheet.CheckBoxes.Delete
Selection.FormatConditions.Delete

我尝试了以下但是没有用。

Sheets("Quote Sheet").Select
Range("D3:D7").Select
Selection.ClearContents
Rows("11:1000").Select
Selection.Delete Shift:=xlUp
If CB.Name <> ActiveSheet.CheckBoxes("Check Box 1").Name Then    
ActiveSheet.CheckBoxes.Delete
Selection.FormatConditions.Delete

1 个答案:

答案 0 :(得分:3)

Sub SelectAllCheckBox()
    Dim CB As CheckBox

    For Each CB In ActiveSheet.CheckBoxes
        If CB.Name <> ActiveSheet.CheckBoxes("Check Box 1").Name Then
            CB.Value = ActiveSheet.CheckBoxes("Check Box 1").Value
        End If
    Next CB

End Sub

第二部分:

Dim CB as CheckBox, n as long, x as long

n = ActiveSheet.CheckBoxes.Count

For x = n to 1 Step -1        
    Set CB = ActiveSheet.CheckBoxes(x)
    If CB.Name <> "Check Box 1" Then CB.Delete

Next x