我正在尝试在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
请帮我解决如何调试此错误。 提前致谢! :)
答案 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
不要忘记将名称Sheet2
和Check Box 1
调整为文件中的实际名称。
以下是逐步的视频解决方案:
答案 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