Excel 错误 1004,当是时,将相邻单元格突出显示为灰色
Excel error 1004, Highlight adjecent cells gray when yes
我正在尝试将一个宏放在我 select Yes
连续的位置,下一个单元格显示为灰色。所以我有几个是的专栏,但我一辈子都无法 figure/fix 排除错误
Error
Runtime Error 1004
Application-defined or object-defied error
代码
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Column = 5 Then
Set r = Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 7))
If Target.Value = "Yes" Or Target.Value = "YES" Then
r.Interior.Color = RGB(192, 192, 192)
Else
r.Interior.Color = xlNone
End If
End If
If ActiveCell.Column = 7 Then
Set s = Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 3))
If Target.Value = "Yes" Or Target.Value = "YES" Then
s.Interior.Color = RGB(192, 192, 192)
Else
s.Interior.Color = xlNone
End If
End If
End Sub
ActiveCell
不是更改的单元格。 Target
是。您需要将对 ActiveCell
的所有引用替换为 Target
并相应地调整偏移量。
将 ActiveCell 更改为 Target 是一个好的开始。您还应该补偿多个目标单元格,以防将值块粘贴到与列 E and/or G.
重叠的范围中
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union(Columns(5), Columns(7))) Is Nothing Then
On Error GoTo Fìn
Application.EnableEvents = False
Dim o As Range, t As Range
For Each t In Intersect(Target, Union(Columns(5), Columns(7)))
Select Case t.Column
Case 5
Set o = t.Offset(0, 1).Resize(1, 7)
Case 7
Set o = t.Offset(0, 1).Resize(1, 3)
End Select
If LCase(t.Value) = "yes" Then
o.Interior.Color = RGB(192, 192, 192)
Else
o.Interior.Pattern = xlNone
End If
Next t
End If
Fìn:
Set o = Nothing
Application.EnableEvents = True
End Sub
我只将单元格范围设置为首先接收填充颜色。请注意,似乎确实存在交叉逻辑问题,如果 E5 收到 Yes 而 G5 收到 No 则只有 K5:L5 会是灰色的。我与 yes 进行了比较,不区分大小写。
错误被安全退出覆盖。
虽然发现了问题,但它使用了条件突出显示,所以这就是与宏冲突的地方
我正在尝试将一个宏放在我 select Yes
连续的位置,下一个单元格显示为灰色。所以我有几个是的专栏,但我一辈子都无法 figure/fix 排除错误
Error
Runtime Error 1004
Application-defined or object-defied error
代码
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Column = 5 Then
Set r = Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 7))
If Target.Value = "Yes" Or Target.Value = "YES" Then
r.Interior.Color = RGB(192, 192, 192)
Else
r.Interior.Color = xlNone
End If
End If
If ActiveCell.Column = 7 Then
Set s = Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 3))
If Target.Value = "Yes" Or Target.Value = "YES" Then
s.Interior.Color = RGB(192, 192, 192)
Else
s.Interior.Color = xlNone
End If
End If
End Sub
ActiveCell
不是更改的单元格。 Target
是。您需要将对 ActiveCell
的所有引用替换为 Target
并相应地调整偏移量。
将 ActiveCell 更改为 Target 是一个好的开始。您还应该补偿多个目标单元格,以防将值块粘贴到与列 E and/or G.
重叠的范围中Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union(Columns(5), Columns(7))) Is Nothing Then
On Error GoTo Fìn
Application.EnableEvents = False
Dim o As Range, t As Range
For Each t In Intersect(Target, Union(Columns(5), Columns(7)))
Select Case t.Column
Case 5
Set o = t.Offset(0, 1).Resize(1, 7)
Case 7
Set o = t.Offset(0, 1).Resize(1, 3)
End Select
If LCase(t.Value) = "yes" Then
o.Interior.Color = RGB(192, 192, 192)
Else
o.Interior.Pattern = xlNone
End If
Next t
End If
Fìn:
Set o = Nothing
Application.EnableEvents = True
End Sub
我只将单元格范围设置为首先接收填充颜色。请注意,似乎确实存在交叉逻辑问题,如果 E5 收到 Yes 而 G5 收到 No 则只有 K5:L5 会是灰色的。我与 yes 进行了比较,不区分大小写。
错误被安全退出覆盖。
虽然发现了问题,但它使用了条件突出显示,所以这就是与宏冲突的地方