Я создаю документ Excel во время выполнения, который имеет набор значений, которые я хотел бы условно отформатировать. Выполняя различные попытки с нуля, а также используя / изменяя код, выводимый из средства записи макросов Excel, у меня возникает постоянная проблема, связанная с перезаписью форматирования.
Я опубликовал фрагмент кода ниже и могу сказать, что я тестировал, чтобы убедиться, что мои диапазоны выбора действительны и подходят для того, что я хочу условно отформатировать. Есть некоторое совпадение, но что странно, так это то, что первый условный формат принимает только одно свойство второго условного формата. Значение D5: в конце рабочего листа отображается шрифт зеленого цвета, а не красный, которым он должен быть. Комментирование каждого раздела кода позволяет им работать независимо, но я предполагаю, что это проблема с дальнейшим указанием условных форматов? Я пробовал несколько разных сценариев, и ниже приведен код с изменениями:
РЕДАКТИРОВАТЬ (обновленный код):
'First conditional format, check sheet for values > 50 and make text red.
With xl.range("D5:" & theLastColumn & lastRow)
.FormatConditions.add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=50"
With .FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
End With
'Second conditional format, check specific row (row 5 in the example)
'for values > 40, and fill interior with green in addition to dark green text.
With xl.range("D" & Infectivity & ":" & theLastColumn & Infectivity)
.FormatConditions.add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=40"
With .FormatConditions(2).Font
.Color = -16752384
.TintAndShade = 0
End With
With .FormatConditions(2).Interior
.PatternColorIndex = xlAutomatic
.Color = 13561798
.TintAndShade = 0
End With
End With
Итак, как лучше всего иметь несколько условных форматов (которые могут перекрывать диапазоны) и при этом все они будут работать так, как задумано? Я так много пробовал отлаживать это, я уверен, что есть кое-что, что я упускаю. Я также пробовал несколько разных методов, чтобы указать отдельные условия форматирования (1) и условия форматирования (2), но по-прежнему получаю странные проблемы.
РЕДАКТИРОВАТЬ:
Код VBA, в котором у меня по-прежнему возникает та же проблема.
Sub conditionalFormat()
With Range("D5:BA9")
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=50"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
End With
With Range("D9:BA9")
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=40"
With .FormatConditions(2).Font
.Color = -16752384
.TintAndShade = 0
End With
With .FormatConditions(2).Interior
.PatternColorIndex = xlAutomatic
.Color = 13561798
.TintAndShade = 0
End With
.FormatConditions(2).StopIfTrue = False
End With
End Sub
Даже с SetFirstPriority в соответствующем условном формате (красный текст) он просто каким-то образом перезаписывается. Я что-то упустил?
A1:G1
, а второй диапазон -D1:J1
, поэтому есть перекрытие наD1:G1
. Так чего вы ждете? - person Siddharth Rout   schedule 04.10.2013xlCellValue
,xlGreater
,xlAutomatic
,xlThemeColorAccent3
? - person Siddharth Rout   schedule 04.10.2013