2017-02-28 67 views
2

我想有条件地格式化循环中的每一行跳过其他行。它通过使用单元格AD8中的色阶标准格式化范围B8:Y8开始。接下来的循环应该格式化B10:使用AD10 Y10,然后B12:使用AD12等Y12一路行98以下是格式化代码,这将是内循环:Excel的VBA循环条件格式按行

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 

回答

2

这可能是权宜之计为B8:Y92创建条件格式规则,然后从奇数行中删除CFR。

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 

请参阅How to avoid using Select in Excel VBA macros