VBA Как программно использовать условное форматирование и применять его только к числам. - PullRequest
0 голосов
/ 12 декабря 2018

Используя VBA и Excel, у меня есть динамический диапазон, и я хочу применить базовое условное форматирование, при котором поле становится зеленым, если число больше 0,8

, в некоторых ячейках есть текст, а не числа, и я нехочу отформатировать эти ячейки.

Вот то, что у меня есть, но оно не работает.

With RESPXL.xlsWS4.Range(RESPXL.xlsWS4.Cells(2, 7), RESPXL.xlsWS4.Cells(RECCNT, 19)).FormatConditions.Add(xlCellValue, xlGreater, "=IsNumber(xlCellValue)", "=0.8")
    .Font.Bold = True
    .Font.Color = -11489280
    .StopIfTrue = False
    .Interior.Color = 13421823
    .Interior.ThemeColor = xlThemeColorAccent6
    .Interior.TintAndShade = 0.799981688894314
End With

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Используя именованный диапазон "RngTest", следующее должно делать то, что вы хотите

Sub CFTest()
    Dim Cond1 As FormatCondition
    Dim CFRange As Range: Set CFRange = Range("RngTest")
    Dim FirstCell As String: FirstCell = Replace(CFRange(1).Address, "$", "")

    With CFRange
        .FormatConditions.Delete
        Set Cond1 = .FormatConditions.Add(Type:=xlExpression, Formula1:="=AND(ISNUMBER(" & FirstCell & ")," & FirstCell & ">0.8)")
    End With

    With Cond1
        .Font.Bold = True
        .Font.Color = -11489280
        .StopIfTrue = False
        .Interior.Color = 13421823
        .Interior.ThemeColor = xlThemeColorAccent6
        .Interior.TintAndShade = 0.799981688894314
    End With
End Sub
0 голосов
/ 12 декабря 2018

Вы должны использовать формулу для определения ваших условий, как это.

.FormatConditions.Add Type:=xlExpression, Formula1:="=AND($A1>0.8, ISNUMBER($A1))"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...