使用 VBA 宏从 Excel 工作簿中取消选择所有复选框

Posted

技术标签:

【中文标题】使用 VBA 宏从 Excel 工作簿中取消选择所有复选框【英文标题】:Unselect All CheckBoxes From Excel Workbook with VBA Macro 【发布时间】:2013-09-26 11:39:56 【问题描述】:

我有一个包含 100 多个复选框的工作簿。

它们是表单控制复选框

我想一次全部取消选择

将它们设置为 false。

 Sub clearcheck()
 ActiveSheet.CheckBoxes.Value = False
 End Sub

这适用于活动工作表。我希望此代码适用于整个工作簿

我曾尝试寻找代码并搞乱清除复选框,但我并不明智。

如果有人能指导我,我将不胜感激

谢谢

【问题讨论】:

那些是什么类型的复选框?表单控件还是 ActiveX 控件? 好吧,我 GUESS 他们是 ActiveX。在这种情况下,加里的回答将完成这项工作:) 【参考方案1】:

如果您有 OLEObject 样式 (ActiveX) 复选框,则:

Sub terranian()
    Dim o As Object
    For Each o In ActiveSheet.OLEObjects
        If InStr(1, o.Name, "CheckBox") > 0 Then
            o.Object.Value = False
        End If
    Next
End Sub

EDIT1:

如果它们是 表单复选框 ,那么以下将起作用:

Sub clearcheck()
    Dim sh As Worksheet
    For Each sh In Sheets
        On Error Resume Next
            sh.CheckBoxes.Value = False
        On Error GoTo 0
    Next sh
End Sub

【讨论】:

嗨,Gary,非常感谢您的回答,复选框是表单控件而不是活动 x,这段代码还能工作吗? 嗨,Gary,这对于活动工作表中的活动 x 复选框非常有效。我正在寻找一个宏,点击后会取消选中工作簿中的所有表单控件复选框,请告知 加里的学生 你是我的英雄!!!非常感谢先生,您为我节省了至少几个小时的时间,感谢您,非常高兴,做得好,堆栈溢出应该有更多像您这样的人! :) : ) :)【参考方案2】:

选择的答案是完美的,但我需要能够通过表单复选框的按钮清除活动工作表或所有复选框。将两个子例程放在一个“模块”中对我有用。然后我为每个动作创建了一个按钮,并映射到各个子例程。

'Uncheck all checkboxes in entire excel workbook
Sub uncheck_all()
    Dim sh As Worksheet
    For Each sh In Sheets
        On Error Resume Next
            sh.Checkboxes.Value = False
        On Error GoTo 0
    Next sh
End Sub

'Uncheck all checkboxes in active sheet
Sub uncheck_active_sheet()
    ActiveSheet.Checkboxes.Value = False
End Sub

【讨论】:

以上是关于使用 VBA 宏从 Excel 工作簿中取消选择所有复选框的主要内容,如果未能解决你的问题,请参考以下文章

需要骨架代码从 PythonWin 调用 Excel VBA

在一个 Excel 工作簿中拆分具有相同名称范围的工作表 - Excel VBA

如何用VBA把一个工作簿中的工作表内容复制到另一个汇总工作簿里面的指定的工作表里面去?

在 VBA 中使用 SQL 连接两个 Excel 工作簿中的数据(只读错误)

Excel VBA 从关闭的工作簿中读取数据,带有 ADODB、动态范围和标题可选

Excel VBA在生成副本的工作表中插入本工作簿中的VBA模块代码