尝试引用工作表中的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
不要忘记将名称Sheet2
和Check 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