2

I am trying to conditionally format for each row in a loop skipping every other row. It starts out by formatting range B8:Y8 using a color scale criteria in cell AD8. The next loop should format B10:Y10 using AD10, then B12:Y12 using AD12, etc. all the way to row 98. Here is the formatting code that will be inside the loop:

Range("B8:Y8").Select
Selection.FormatConditions.AddColorScale ColorScaleType:=2
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
    xlConditionValueNumber
Selection.FormatConditions(1).ColorScaleCriteria(1).Value = 0
With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = 0
End With
Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
    xlConditionValueNumber
Selection.FormatConditions(1).ColorScaleCriteria(2).Value = "=$AD$8"
With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
    .ThemeColor = xlThemeColorAccent2
    .TintAndShade = 0
End With

1 Answer 1

2

It may be expedient to make the conditional formatting rule for B8:Y92 then delete the CFR from the odd rows.

Dim r As Long
With ActiveSheet
    With .Range("B8:Y92")
        .FormatConditions.Delete
        .FormatConditions.AddColorScale ColorScaleType:=2
        .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        .FormatConditions(1).ColorScaleCriteria(1).Type = _
            xlConditionValueNumber
        .FormatConditions(1).ColorScaleCriteria(1).Value = 0
        With .FormatConditions(1).ColorScaleCriteria(1).FormatColor
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = 0
        End With
        .FormatConditions(1).ColorScaleCriteria(2).Type = _
            xlConditionValueNumber
        .FormatConditions(1).ColorScaleCriteria(2).Value = "=$AD$8"
        With .FormatConditions(1).ColorScaleCriteria(2).FormatColor
            .ThemeColor = xlThemeColorAccent2
            .TintAndShade = 0
        End With
    End With
    For r = 9 To 91 Step 2
        .Range("B" & r & ":Y" & r).FormatConditions.Delete
    Next r
End With

See How to avoid using Select in Excel VBA macros.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.