我为我的复选框分配了一个宏,这样当你勾选它时,它会将一个特定的值设置到一个单元格中。但是,我在第一个invalid qualifier
。值上发生了Checkbox1
错误。
以下是代码:
Option Explicit
Public CheckBox1 As Boolean
Sub CheckBox1_Click()
If CheckBox1.Value = True Then Range("Q10").Value = 1
If CheckBox1.Value = False Then Range("Q10").Value = 0
End Sub
谢谢!
答案 0 :(得分:3)
我假设您使用了名为CheckBox1的ActiveX控件,如果是这样,您遇到了问题,因为您还定义了公共布尔CheckBox1。
您的代码不满意,因为CheckBox1 boolean的公共声明覆盖了控件变量CheckBox1,而boolean
没有.Value
属性。如果要在布尔值中存储checkbox值的使用,则从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