Страницы: 1
RSS
Interior.Color не различает заливку ячейки условным форматированием
 
Всем привет!
По условию я задал заливку на ячейки (красную и зеленую). То есть я воспользовался функцией условное форматирование, где например если значение в ячейке меньше 0, то красным, если больше то зеленым.
Так вот,  "? ActiveCell.Interior.Color " не различает цвета заливки! Что красную, что зеленую заливку он отображает одинаково как 5296274.
Кто нибудь сталкивался?
 
Поиск.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Если Excel 2010 или выше, то надо использовать DisplayFormat.Interior.Color. Но внутри функций пользователя работать не будет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
JayBhagavan , хотя заливка Условного форматирования наносится поверх заливки Формата ячейки, она не изменяет (не отменяет ее), а ее просто не видно.
Засада.

The_Prist , Excel 2007. DisplayFormat не работает, ошибку выдает.
 
Цитата
The_Prist написал: Если Excel 2010 или выше, то надо использовать DisplayFormat.Interior.Color
Цитата
Radik_82 написал: Excel 2007. DisplayFormat не работает, ошибку выдает.
Логично. Я же написал вроде четко и понятно: если Excel 2010 и выше.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Вообще я очень хорошо сталкивался с УФ. Если так надо - можете сначала заменить все УФ на обычное и дальше работать макросом:
Замена Условного форматирования обычным
Заменить условия УФ реальными
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, я изменил формулу, и в 2013 екселе не работает. В чём может быть проблема?
Изменено: ILYA1994rus - 03.11.2016 08:54:30
 
The_Prist,Замена Условного форматирования обычным работает не корректно. Скажем 1-й и 2-й человек в табеле проходят по программе. А вот третий нет. Если даже с него начать. Пишет Run-time error '1004': Метод PasteSpecial из класса Range завершен неверно. в чём дело. Более приемлемо конечно чтобы формула реагировала на цвет условного форматирования. Т.к. с прогой этой приходится вручную ещё нажимать и переводить цвет ячеек из условного форматирования в реальный. А я хочу что бы всё было по максимум автоматически  
 
Перечитайте свои сообщения и вдумайтесь - я могу ответ дать вменяемый? Нет. Я могу лишь постебаться.
Цитата
ILYA1994rus написал:
я изменил формулу
Какую формулу? Где изменили? На что изменили? Какое отношение к этому имею я и про какую конкретно надстройку речь?
У меня нет никаких условий вроде:
Цитата
ILYA1994rus написал:
1-й и 2-й человек в табеле проходят по программе. А вот третий нет. Если даже с него начать
Где это, откуда, что запускаете и т.д. Выкладывайте файл.
Цитата
ILYA1994rus написал:
Более приемлемо конечно чтобы формула реагировала на цвет условного форматирования
это да. Но вот проблемка - это вообще не реализуемо средствами VBA, т.к. событие изменения цвета вообще не отслеживается. А если вешать замену на каждое изменение ячеек или еще хуже - на пересчет листа - то это приведет к неописуемым тормозам файла.
Изменено: The_Prist - 03.11.2016 10:27:19
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Нужна была функция счета ячеек в диапазоне если она определенного цвета и в ней есть определенный текст.
Имеется табель. И есть норма часов. Когда работник в отпуске или на больничном норма часов для него меняется. я привел пример как ведётся подсчет нормы труда. и нужна формула которая это всё учитывала. А для этого нужно просто что бы он проверял есть ли в выбранном диапазоне буква "О" или "Б" и является ли эта ячейка где нашлась эта буква определенного цвета. Я уже искал на форумах функцию подсчета количества ячеек определенного цвета но я не могу туда внедрить условие если в этой ячейки буква "Б" или "О" то тогда считать как 1. Он просто почитывает все ячейки выбранного цвета. на другом форуме помогли дополнить формулу. и выглядит она сейчас так.
Код
Public Function СЧЁТцветИтекст(ДИАПАЗОН As Range, ЯЧЕЙКА) As Long
    Dim S As Double
    Dim rCell As Range
    Dim ColCell As Long
    Application.Volatile True
    ColCell = ЯЧЕЙКА.Interior.Color
    S = 0

    For Each rCell In ДИАПАЗОН
        If rCell.Interior.Color = ColCell And (rCell.Value = "Б" Or rCell.Value = "О") Then
            S = S + 1
        End If
    Next
 
    СЧЁТцветИтекст = S
End Function

на форуме подсказали что бы написал и что для 2010 и выше офиса
Код
If rCell.DisplayFormat.Interior.Color = ColCell and (rCell.Value="Б" or rCell.Value="О") Then

я поставил и пишет просто #знач!
Вот и что не так то?
 
Цитата
ILYA1994rus написал:
на форуме подсказали что бы написал и что для 2010 и выше офиса
ну так надо было до конца читать. Я там специально и такой момент упомянул:
Цитата
The_Prist написал:
Если Excel 2010 или выше, то надо использовать DisplayFormat.Interior.Color. Но внутри функций пользователя работать не будет.
поэтому логично, что ЗНАЧ. Ну господа, один прочитал без 2010, другой про функцию не увидел...Будьте внимательнее и воздастся :)

В функциях пользователя работа с условным форматированием вообще то еще занятие. Я делал это, но не на VBA и решение ни разу не простое. Проще взять и переписать в UDF условие, на котором основано УФ.
Изменено: The_Prist - 03.11.2016 12:31:06
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Читают тему
Наверх