Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 无效限定符-尝试激发复选框时单击_Excel_Vba - Fatal编程技术网

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,我扩展了我的答案来帮助你。