【发布时间】:2020-08-12 18:22:59
【问题描述】:
我有一张带有很多复选框的表格。第一个有标题全选,当你点击它时,所有的复选框都应该被选中。这很好用,但我也想通过取消选中它来取消选中所有复选框,但我无法让它工作。我收到错误 1004。这是我正在尝试的代码:
Private Sub CheckBox1_Click()
On Error GoTo finished
For i = 2 To 200
If ActiveSheet.OLEObjects("CheckBox1").Object.Value = True Then ' <- this line gives the 1004 error
ActiveSheet.OLEObjects("CheckBox" & i).Object.Value = False
Else
ActiveSheet.OLEObjects("CheckBox" & i).Object.Value = True
End If
Next i
Exit Sub
finished:
End Sub
【问题讨论】:
-
错误信息的Text是什么?您确定您有一个具有该名称的复选框吗?仅供参考,如果此代码在工作表代码模块中,那么您应该使用
Me来引用工作表,而不是ActiveSheet。这样,当您最终有代码在工作表不处于活动状态时更改复选框值时,它不会中断。 -
文本是“应用程序定义或对象定义错误”docs.microsoft.com/sv-se/office/vba/Language/Reference/… 我确实有一个具有该名称的复选框。它是通过按下按钮创建的,然后在代码中重命名为 Checkbox1。如果我右键单击它并选择查看代码,则会显示子
CheckBox1_Click()。 -
这是一个重要的细节——在运行时创建控件以及工作表模块中的相关代码会给你带来各种各样的问题——为了让所有连接工作表模块的东西都需要重新编译,这带来了挑战....您可能需要重新考虑您的方法。
标签: excel vba checkbox activex