通过CommandButton取消选中整个工作簿中的所有checkbox

我想有一个代码,取消选中名为“CheckBox1”的工作簿中所有工作表的所有checkbox。 我目前的代码不幸的是不工作,我不知道为什么 – 它只适用于活动工作表。

Private Sub CommandButton1_Click() Dim Sheet As Worksheet For Each Sheet In ThisWorkbook.Worksheets Select Case CheckBox1.Value Case True: CheckBox1.Value = False End Select Next End Sub 

此代码遍历所有工作表( Sheet100Sheet100OtherSheet ),并取消选中名为CheckBox1所有ActiveXcheckbox

 Sub uncheck_boxes() Dim ws As Worksheet Dim xbox As OLEObject For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Sheet100" And ws.Name <> "OtherSheet" Then For Each xbox In ws.OLEObjects ws.OLEObjects("CheckBox1").Object.Value = False Next End If Next End Sub 

要取消所有工作表中的所有ActiveXcheckbox,忽略所使用的名称

 Sub uncheck_all_ActiveX_checkboxes() Dim ws As Worksheet Dim xbox As OLEObject For Each ws In ThisWorkbook.Worksheets For Each xbox In ws.OLEObjects ws.OLEObjects(xbox.Name).Object.Value = False Next Next End Sub 

取消选中电子表格中使用的所有Form Control checkboxes

 Sub uncheck_forms_checkboxes() Dim ws As Worksheet Dim xshape As Shape For Each ws In ThisWorkbook.Worksheets For Each xshape In ws.Shapes If xshape.Type = msoFormControl Then xshape.ControlFormat.Value = False End If Next Next End Sub 

[编辑下面的评论]

尝试这个:

 Sub test() Dim ws As Excel.Worksheet Dim s As Object For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Definitions" And ws.Name <> "fx" Then Set s = Nothing On Error Resume Next Set s = ws.OLEObjects("CheckBox1") On Error GoTo 0 If Not s Is Nothing Then s.Object.Value = False End If End If Next ws End Sub 

这是一个全局函数(它不属于特定的工作表),但是如果你愿意的话,你可以把它放在CommandButton1_Click()里面。

如果您的工作表(定义和fx除外)始终包含CheckBox1则可能不需要阻止错误。 或者删除,如果语句。