Страницы: 1
RSS
поиск первой закрашенной ячейки
 
Здравствуйте!

Помогите, пожалуйста!

Есть строка, в которой ячейки столбцов от F до, например, АА содержат одинаковые значения. Некоторые ячейки этой строки через условное форматирование окрашиваются в заданный цвет. Требуется найти количество неокрашенных ячеек до первой окрашенной.

Хотел было использовать функцию

Public Function ColorIndex(Cell As Range)
   ColorIndex = Cell.Interior.ColorIndex
End Function

но она почему-то не понимает цвета ячейки, которая окрашена через условное форматирование.
 
Файл пример покажите.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
ton bon написал:
но она почему-то не понимает цвета ячейки, которая окрашена через условное форматирование.
Получить цвет заливки УФ можно так (для 2007 и старше)
Код
ColorIndex = Cell.DisplayFormat.Interior.ColorIndex

НО!
Цитата
Обратите внимание, что свойство DisplayFormat не работает в определяемых пользователем функциях (UDF). Например, в функции листа, которая возвращает цвет интерьера ячейки, используется строка, аналогичная: Range(n).DisplayFormat.Interior.ColorIndex. При выполнении функции листа она возвращает ошибку #VALUE! .
Свойство Range.DisplayFormat (Excel)
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
для 2007 и старше
для 2010 и старше. Для 2007 свойство DisplayFormat не доступно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Наверное можно сделать счет ячеек по условиям, которые заложены в условном форматировании, а к цвету не привязываться вовсе, потому как через функцию DisplayFormat не работает, а как работает - не понятно.

Спасибо, что навели на эту мысль!
 
Цитата
ton bon написал:
через функцию DisplayFormat не работает, а как работает - не понятно
да нет ничего не понятного. Просто Вы не все прочли - свойство DisplayFormat не будет работать внутри UDF(т.е. функции пользователя, вызываемой с листа). Вот и все. А у Вас скорее всего именно из листа и вызывается функция.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
А у Вас скорее всего именно из листа и вызывается функция
Прочел и немедленно в этом убедился (вызывая ее с листа).
Однако мои скудные познания VBA и "доходчивый" мануал не позволяют мне понять, как использовать DisplayFormat, поэтому и решил использовать не его, а условия, по которым он задается. Возможно коряво, но хоть так. Спасибо Вам большое!
Если Вас не затруднило бы привести простенький пример с использованием DisplayFormat был бы премного благодарен.
 
Цитата
ton bon написал:
простенький пример с использованием DisplayFormat
Макрос выводит сообщение с индексом цвета заливки УФ, для ячейки 'A1' активного листа
Код
Sub GetDisplayFormat()
  MsgBox ActiveSheet.Range("A1").DisplayFormat.Interior.ColorIndex
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Цитата
написал:
Макрос выводит сообщение с индексом цвета заливки УФ, для ячейки 'A1' активного листа
Спасибо большое!  
Страницы: 1
Наверх