通过 CommandButton 取消选中整个工作簿中的所有复选框
Posted
技术标签:
【中文标题】通过 CommandButton 取消选中整个工作簿中的所有复选框【英文标题】:Uncheck all checkboxes across entire workbook via CommandButton 【发布时间】:2013-05-24 23:14:24 【问题描述】:我想要一个代码来取消选中工作簿中所有工作表的所有名为“CheckBox1”的复选框。不幸的是,我当前的代码不起作用,我不知道为什么 - 它只适用于活动工作表。
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
【问题讨论】:
【参考方案1】:此代码遍历所有工作表(除了名为 Sheet100
和 OtherSheet
的工作表)并取消选中您所有的@ 987654323@ 个复选框,名为 CheckBox1
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
取消选中所有工作表中的所有 ActiveX
复选框,而不考虑使用的名称
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
【讨论】:
谢谢你的帮助。发生了一些非常奇怪的事情:这似乎适用于我手动创建的框的 2 张纸;但是,它似乎不适用于后续工作表,我只是复制粘贴了复选框和 VBA 代码。我检查了多次,这些项目的名称与我手动创建的名称相同。我真的不明白为什么这不起作用?手动创建所有框是不可行的,因为我有太多的工作表。非常感谢您的帮助。 @jcv 我明白了。我敢打赌,这很简单,你不知何故忽略了男人。打开一个新工作簿并尝试手动创建一些复选框并将一些复制到其他工作表。然后运行此代码并查看行为。我已经在我的机器上进行了测试,一切正常。在您的情况下,放置一些Debug.Print
行,以查看您是否真的在遍历所有工作表、所有复选框等
嗯,谢谢伙计。我做了一些分析并遇到了一个新错误 - 请参阅我更新的主帖。当我运行您的 VBA 代码时,CheckBox 代码中出现错误@Case False [...] ActiveSheet.Shapes 等。您能看看吗?【参考方案2】:
[编辑以下cmets]
试试这个:
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
,则您可能不需要错误阻止。或者删除该 if 语句。
【讨论】:
芭丝谢芭,感谢您的快速回复。我尝试了您的两个建议,它们产生了一个代码错误,分别说明“预期:表达式”和“对象不支持此属性或方法”。它们是 ActiveX 控件元素。 您使用的是哪个版本的 Excel?而且,复选框是表单控件还是 ActiveX 控件(或者您不知道)? Excel 2007 和 ActiveX 控件如上所述 谢谢,非常感谢您的帮助!但是,似乎仍然存在问题......我已经更新了我的主要帖子。以上是关于通过 CommandButton 取消选中整个工作簿中的所有复选框的主要内容,如果未能解决你的问题,请参考以下文章
复选框选中/取消选中无法与 angularjs 一起正常工作
如何通过使用alpine js单击一个复选框来选中和取消选中所有复选框