Я не могу проверить это в Excel 2007, но ошибка, безусловно, не с объектом FormatConditions.Font
. Ошибка повышается в соответствии с вашим запросом .Font.Color
.
Рассмотрение ссылки dev для объекта .Font
в 2007 году, кажется, что вы должны использовать формулу RGB()
для назначения цвета.
http://msdn.microsoft.com/en-us/library/office/bb213182(v=office.12).aspx
Однако мой Google-фу указывает на то, что вы не можете использовать отрицательное значение цвета с RBG
задания. Думаю, вам нужно будет выбрать другой цвет. Возможно, есть несколько способов использования WinAPI, но я не могу проверить этот подход на данный момент.
Я выбрал еще один синий, похожий по оттенку на ваш -16752384
.
Sub test()
'## This section converts a long color to its R/G/B components
Dim col As Long: col = 15773696
Dim r As Long, g As Long, b As Long
r = col Mod 256
g = (col \ 256) Mod 256
b = (col \ 256 \ 256) Mod 256
'## Your code, with modification for the RGB Formula:
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""BREAK TOP"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = RGB(r, g, b) '<-- RGB Formula, here.
.TintAndShade = 0
End With
End Sub
UPDATE
Попробуйте это, не используйте Selection
объект.
Sub test2()
Dim rng as Range
Dim fc as FormatCondition
Set rng = Range(Selection.Address)
'## This section converts a long color to its R/G/B components
Dim col As Long: col = 15773696
Dim r As Long, g As Long, b As Long
r = col Mod 256
g = (col \ 256) Mod 256
b = (col \ 256 \ 256) Mod 256
'## Your code, with modification for the RGB Formula:
rng.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""BREAK TOP"""
rng.FormatConditions(rng.FormatConditions.Count).SetFirstPriority
Set fc = rng.FormatConditions(1)
fc.Font.Color = RGB(r, g, b) '<-- RGB Formula, here.
fc.Font.TintAndShade = 0
End Sub
Это [поддерживается в Excel 2007] (http://msdn.microsoft.com/en-us/library/office/bb223827 (v = office.12) .aspx) по ссылке Dev. Я тестирую код в 2010 году, и он работает. В любом случае, если проблема '.Font' была проблемой, ошибка возникла бы в строке' With Selection.FormatConditions (1) .Font', а не '.Color'. –
@DavidZemens Спасибо! Если прокомментировать «.Color» и «.TintAndShade», программа может работать без ошибок. Я уже обновил пакет совместимости с Microsoft, но все равно это не помогает. Прошу совета! – rpg
Я думаю, вам нужно использовать назначение цвета «RGB» в 2007 году. Это не работает с отрицательными значениями цвета. Я отправлю более подробный ответ. –