Excel 无效限定符-尝试激发复选框时单击
我为复选框指定了一个宏,这样当您勾选它时,它会在单元格中设置一个特定值。但是,在我的第一个Excel 无效限定符-尝试激发复选框时单击,excel,vba,Excel,Vba,我为复选框指定了一个宏,这样当您勾选它时,它会在单元格中设置一个特定值。但是,在我的第一个复选框1值上,我得到了一个无效的限定符错误 代码如下: 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
复选框1
值上,我得到了一个无效的限定符
错误
代码如下:
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
谢谢 我假设您使用了一个名为CheckBox1的ActiveX控件,如果是这样的话,您会遇到问题,因为您还定义了公共布尔CheckBox1 您的代码不满意,因为CheckBox1布尔值的公共声明正在覆盖控制变量CheckBox1,
boolean
没有.Value
属性。如果要将复选框值的使用存储在布尔值中,请从Checkbox1更改公共变量名,否则请完全删除此声明
编辑:
根据您的评论,您没有链接工作表中的复选框。代码必须知道什么是复选框1。由于删除了布尔值,它现在不知道什么是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
您还可以显著降低这一成本,以下措施将起作用:
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
我假设您使用了一个名为CheckBox1的ActiveX控件,如果是这样的话,您会遇到问题,因为您还定义了公共布尔CheckBox1 您的代码不满意,因为CheckBox1布尔值的公共声明正在覆盖控制变量CheckBox1,
boolean
没有.Value
属性。如果要将复选框值的使用存储在布尔值中,请从Checkbox1更改公共变量名,否则请完全删除此声明
编辑:
根据您的评论,您没有链接工作表中的复选框。代码必须知道什么是复选框1。由于删除了布尔值,它现在不知道什么是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
您还可以显著降低这一成本,以下措施将起作用:
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
我非常沮丧,我删除了这个命令,现在我得到了这个错误:
objectrequired
。具体地说,如果CheckBox1.Value=True,则为。我甚至删除了旧的复选框,并用指定的代码创建了一个新的复选框,但没有效果。嘿@pufAmuf,我已经扩展了我的答案来帮助你。我非常沮丧,我删除了这个命令,现在出现了这个错误:需要对象
。具体地说,如果CheckBox1.Value=True,则为。我甚至删除了旧的复选框,并用指定的代码创建了一个新的复选框,但没有用。嘿@pufAmuf,我扩展了我的答案来帮助你。