在VBA中使用条件格式

时间:2014-01-08 23:34:26

标签: excel-vba vba excel

我正在使用循环将条件格式放入"每隔4行"在"栏D"。但是,我无法正确获取代码。

我发生了两件事。首先,我已经将电子表格中的公式显示在" "围绕公式和条件格式不起作用。所以现在我尝试使用以下代码重写它,它告诉我编译错误预期语句结束。

我对如何获得D(i-1)>sum(D(i):D(i+2)阴影细胞红色的条件格式的任何帮助表示赞赏。

这是我想要遮蔽的For / Next循环的中间位置。

    Range("D" & (i - 1)).Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="D" & (i-1) & "> Sum(D" & i & "D" & (i + 2)")"

        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False

        i = i + 4

2 个答案:

答案 0 :(得分:1)

这对我有用:

Sub Tester()

    Dim i As Long, fc As FormatCondition

    For i = 2 To 10 Step 4

        Set fc = ActiveSheet.Range("D" & (i - 1)).FormatConditions. _
                       Add(Type:=xlExpression, _
                       Formula1:="=D" & (i - 1) & "> Sum(D" & i & ":D" & (i + 2) & ")")

        fc.SetFirstPriority

        With fc.Interior
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
        End With

        fc.StopIfTrue = False

    Next i

End Sub

答案 1 :(得分:0)

是否要求在VBA中执行此操作?我问,因为通过常规的条件格式化,你也可以轻松地将它应用到每第4行。

为此,您只需要在条件格式中使用类似这样的公式:

=AND(MOD(ROW($D5),4)=0, $D5 > SUM($D$2:$D4))

MOD函数将行号除以4并检查余数是否为4。

这不是你要求的,但它可能会解决你的情况...