多列作为一个范围-Worksheet_Change-条件格式的替代方案



我不知道如何为多个列设置一个范围,大约150个列,或者从Q列开始每4列设置一次。我试图单独设置每一列,但代码行太长,无法拆分(前15列列在本代码中(。我希望你明白问题出在哪里。

这是我的代码:

Private Sub Worksheet_Change(ByVal Target As Range)
r = Target.Row
If Not Intersect(Target, Range("Q3:Q5000, U3:U5000, Y3:Y5000, AC3:AC5000, AG3:AG5000, AK3:AK5000, AO3:AO5000, AS3:AS5000, AW3:AW5000, BA3:BA5000, BE3:BE5000, BI3:BI5000, BM3:BM5000, BQ3:BQ5000, BU3:BU5000")) Is Nothing Then
If Target.Value = "Likvidirana partija" Or Target.Value = "likvidirana partija" Then
Target.EntireRow.Interior.Color = RGB(220, 230, 241)

Else

If Target.Value = "" Then
Target.Interior.Color = RGB(255, 255, 255)
Else
If Target.Value < Cells(r, 7).Value Then
Target.Interior.Color = RGB(255, 255, 0)
Target.Font.Color = RGB(255, 0, 0)
Else

If Target.Value > Cells(r, 7).Value Then
Target.Interior.Color = RGB(146, 208, 80)
Target.Font.Color = RGB(0, 0, 0)
End If
End If
End If
End If

End If
End Sub

我是新来的,这是我的第一篇帖子,所以如果我做错了什么,我道歉。

试试这个。它没有经过测试,所以可能会出现一些故障。

目前,您的代码不会删除任何现有格式。

建议您阅读VBA中的If Else结构。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 17 Or Target.Column > Range("BU1").Column Then Exit Sub 'column
If Target.Row < 3 Or Target.Row > 5000 Then Exit Sub                       'row
If (Target.Column - 4) Mod 4 <> 0 Then Exit Sub                            'every 4th from 17
Dim r As Long
r = Target.Row
If Target.Value = "Likvidirana partija" Or Target.Value = "likvidirana partija" Then _
Target.EntireRow.Interior.Color = RGB(220, 230, 241)
If Target.Value = "" Then Target.Interior.Color = RGB(255, 255, 255)
If Target.Value < Cells(r, 7).Value Then
Target.Interior.Color = RGB(255, 255, 0)
Target.Font.Color = RGB(255, 0, 0)
ElseIf Target.Value > Cells(r, 7).Value Then
Target.Interior.Color = RGB(146, 208, 80)
Target.Font.Color = RGB(0, 0, 0)
End If
End Sub

我一直在寻找的答案:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 13 Then Exit Sub                     'column
If Target.Row < 3 Or Target.Row > 5000 Then Exit Sub    'row
If (Target.Column - 5) Mod 4 <> 0 Then Exit Sub         'every 4th from 17
Dim r As Long
r = Target.Row
If Target.Value = "Likvidirana partija" Or Target.Value = "likvidirana partija" Then
Target.EntireRow.Interior.Color = RGB(220, 230, 241)
Else

If Target.Value = "" Then
Target.Interior.Color = RGB(255, 255, 255)
Else

If Target.Value < Cells(r, 7).Value Then
Target.Interior.Color = RGB(255, 255, 0)
Target.Font.Color = RGB(255, 0, 0)
Else

If Target.Value >= Cells(r, 7).Value Then
Target.Interior.Color = RGB(146, 208, 80)
Target.Font.Color = RGB(0, 0, 0)
End If

End If

End If

End If
End Sub

最新更新