尝试在工作表中引用CheckBox时出现“Object Required”错误

时间:2017-03-15 13:40:19

标签: excel vba excel-vba

我正在尝试在excel vba中编写代码。

我想在选中复选框时更改用户所选单元格的颜色。

我已编写此代码,但它在标记的行上显示“需要对象”错误。

Sub CheckBox1_Click()    
Dim xRng As Range    
Set xRng = Selection

If CheckBox1.Value = True Then 'This is the error    
    xRng.Interior.Color = vbGreen    
End If

If CheckBox1.Value = False Then    
    xRng.Interior.Color = xlNone    
End If

End Sub

请帮我解决如何调试此错误。 提前致谢! :)

3 个答案:

答案 0 :(得分:2)

在我看来,这就是你想要的:

Sub CheckBox1_Click()
Dim xRng As Range
Set xRng = Selection

If Worksheets("Sheet2").CheckBoxes("Check Box 1").Value = 1 Then
    xRng.Interior.Color = vbGreen
Else
    xRng.Interior.Color = xlNone
End If

End Sub

不要忘记将名称Sheet2Check Box 1调整为文件中的实际名称。

以下是逐步的视频解决方案:

enter image description here

答案 1 :(得分:1)

默认情况下,此类控件的代码放在常规模块中,因此您必须指定放置控件的工作表(更改Sheet's name):

Sub CheckBox1_Click()    
Dim xRng As Range
Set xRng = Selection

If  ThisWorkBook.Sheets("Sheet's name").Shapes("Check Box 1").ControlFormat.Value = 1 Then
    xRng.Interior.Color = vbGreen
Else
    xRng.Interior.Color = xlNone
End If

End Sub

如果您将该代码放在表单复选框所在的模块中,则 解决此问题的最简单方法是尝试添加Me

Sub CheckBox1_Click()    
Dim xRng As Range
Set xRng = Selection

If Me.Shapes("Check Box 1").ControlFormat.Value = 1 Then
    xRng.Interior.Color = vbGreen
Else
    xRng.Interior.Color = xlNone
End If

End Sub

答案 2 :(得分:1)

我喜欢以下

Sub CheckBox1_Click()

    Selection.Interior.Color = IIf(ActiveSheet.CheckBoxes("CheckBox1").Value = xlOn, vbGreen, 16777215)

End Sub