Условное форматирование в VBA, основанное на функциях - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть (полу) сложное условное форматирование в 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 Ответ

6 голосов
/ 30 ноября 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...