我假设您使用了名为 CheckBox1 的 ActiveX 控件,如果是这样,您遇到了问题,因为您还定义了公共布尔 CheckBox1。
您的代码不满意,因为 CheckBox1 布尔值的公共声明正在覆盖控制变量 CheckBox1 并且 aboolean
没有.Value
属性。如果您想将复选框值的使用存储在布尔值中,请从 Checkbox1 更改您的公共变量名称,否则完全删除此声明。
编辑:根据您的评论,您没有链接工作表中的复选框。代码必须知道 CheckBox1 是什么。由于您已经删除了布尔值,它现在不知道是什么Checkbox1
。因此,您需要告诉它复选框在哪里。你可以通过多种方式做到这一点。如果它是一个表单复选框(不是我最初想到的 ActiveX),那么以下代码将起作用:
Sub Checkbox1()
Dim cb As Object, myCheckBoxValue As Boolean
'Get the object from the worksheet
Set cb = ActiveSheet.Shapes("Check Box 1").OLEFormat.Object
'Assign it's value to the boolean (1 is checked, -4146 is unchecked, 2 is mixed (grey box))
If cb.Value = 1 Then myCheckBoxValue = True Else myCheckBoxValue = False
'Output to worksheet
If myCheckBoxValue Then
ActiveSheet.Range("Q10").Value = 1
Else
ActiveSheet.Range("Q10").Value = 0
End If
Set cb = Nothing
End Sub
您也可以显着减少它,以下将起作用:
Sub Checkbox1()
If ActiveSheet.Shapes("Check Box 1").OLEFormat.Object.Value = 1 Then
ActiveSheet.Range("Q10").Value = 1
Else
ActiveSheet.Range("Q10").Value = 0
End If
End Sub