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

Пример, комментарий и код того, что я попробовал ниже. Примечание. Выделение - это просто ячейка, которая содержит условный формат.

Как я могу получить ссылку на FormatCondition объект? Что я пропускаю / не вижу? Ошибка в последней строке ...

Sub FC_Test()
Dim fc As FormatConditions
Dim fco As Object
Dim c As Object
Dim myRng As Range
Set myRng = Selection 'Any cell with a conditional format

Debug.Print "FC Count: " & myRng.Resize(1, 1).FormatConditions.Count

'Finds all FC on the sheet
Set fc = Cells.FormatConditions
Debug.Print TypeName(fc) 'Returns: FormatConditions

'Finds first applied format condition...
'...oddly this is not a FormatCondition (member of hte FC collection),
' but the name of the type of format condition applied.. i.e. "ColorScale", etc.
Set c = Cells.FormatConditions(1)
Debug.Print TypeName(c) 'Returns: ColorScale

'Finds FC in selected range.
Set fc = myRng.Resize(1, 1).FormatConditions
Debug.Print TypeName(fc) 'Returns: FormatConditions
Debug.Print TypeName(fc.Item(1)) 'Returns: ColorScale
Set fco = fc(1)
Debug.Print TypeName(fco) 'Returns: ColorScale

Set fco = Nothing
For Each fco In fc
    Debug.Print TypeName(fco) 'Returns: ColorScale
Next fco

Dim fcs As FormatCondition
Set fcs = myRng.Resize(1, 1).FormatConditions(1) 'Type Mismatch:13

End Sub
0
rohrl77 17 Апр 2019 в 10:35

2 ответа

Лучший ответ

Коллекция FormatConditions может содержать объекты различного типа: FormatCondition, Databar, ColorScale, IconSetCondition, ....

Это разные классы с разными свойствами - тип объекта зависит от вида правила условного форматирования.

Это означает, что невозможно получить объект FormatCondition, когда применяется другое правило (например, цветовая шкала). Чтобы прочитать цвет ячейки (независимо от того, является ли это нормальным или условным форматированием) Range.DisplayFormat можно использовать.

1
BrakNicku 17 Апр 2019 в 12:50

Объект FormatConditions

With myRng.FormatConditions(1)
    .Interior.PatternColorIndex = xlAutomatic
    .Interior.ColorIndex = 19
    .Font.ColorIndex = 26
End With
0
Dmitrij Holkin 17 Апр 2019 в 12:06