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

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

我想在checkbox被选中时改变用户所选单元格的颜色。

我已经写了这个代码,但是它在标记的行上给出了'object required'错误。

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 

请帮助我如何debugging这个错误。 提前致谢! 🙂

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

 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调整为文件中的实际名称。

这里是一个一步一步的video解决scheme:

在这里输入图像说明

我会像下面一样去

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

默认情况下,这种控制的代码被放置在一个常规的模块中,
所以你必须指定放置控件的工作表(更改工作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 

如果您将该代码放在checkbox所在的工作表模块中,
解决这个问题的最简单方法是尝试添加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