VBA中的条件格式,基于函数

时间:2011-11-29 19:37:57

标签: excel vba conditional-formatting

我在Excel中有一些(半)复杂的条件格式。我可以使用菜单工作没有问题,但我想以编程方式进行,因为我希望它应用于多个工作表(复制,粘贴格式不起作用)。

我在设置CF以获取代码时尝试录制宏,但它没有记录该类型的条目。

以下是我正在应用的规则,目前在以下范围内:= $ 1:$ 65536

=OR(COLUMN()=1,COLUMN()=2,ISBLANK($B1))
=AND(LEFT($A1,6)="Base (",A1>100)
=AND(LEFT($A1,6)="Base (",A1>=75,A1<=100)
=AND(LEFT($A1,6)="Base (",A1>=50,A1<75)
=AND(LEFT($A1,6)="Base (",A1<50)
=$B1-9.999  (current cell is less than this value)

就像我说的那样,我可以通过将整列从一张纸复制到另一张纸来手动复制,但是我不能将它复制到所有纸张上,我想找到一种方法将其作为宏因此它可以很容易地应用于新的工作簿(往往有10-15张)。

1 个答案:

答案 0 :(得分:6)

Sub DoCFRules()

    Dim rng As Range
    Set rng = ThisWorkbook.Sheets("Sheet1").Cells

    rng.Parent.Activate
    rng.Cells(1).Select 'Important!

    ApplyCF rng, "=OR(COLUMN()=1,COLUMN()=2,ISBLANK($B1))", RGB(0, 255, 0)
    ApplyCF rng, "=AND(LEFT(A1,6)=""Base ("",A1>100)", RGB(255, 0, 0)
    'etc...

End Sub

Sub ApplyCF(rng As Range, sFormula As String, clr As Long)
    With rng.FormatConditions.Add(Type:=xlExpression, Formula1:=sFormula)
        .Interior.Color = clr
    End With
End Sub