Страницы: 1
RSS
Цвет ячейки условное форматирование
 
Всем привет,  
 
На листе для одного и того же диапазона заданы два условия условного форматирования с заливкой ячеек разным цветом.  
 
Вопрос: При проверке свойств каждой ячейки циклом For Each Cell in Range как проверить каким цветом форматирования залиты ячейки (при выполнении условия)?  
Цвета форматирования соответсвенно - Cell.FormatConditions(1).Interior.ColorIndex и    
Cell.FormatConditions(2).Interior.ColorIndex одинаковы для всех ячеек диапазона независимо от выполнения условия форматирования.  
 
 
Заранее благодарен,  
 
Владимир.
 
ColorIndex=3 - красный  
ColorIndex=4 - зеленый  
For Each Cell in Range  
If cell.interior.colorindex=3 Then  
MsgBox ("Красный")  
ElseIF cell.interior.colorindex=3 Then  
MsgBox ("Зеленый")  
End IF  
Next  
 
Как-то так
Кому решение нужно - тот пример и рисует.
 
ElseIF cell.interior.colorindex=4 Then  
MsgBox ("Зеленый")  
Вот как  
Ошибся во второй проверке
Кому решение нужно - тот пример и рисует.
 
Если я правильно понял вопрос, то, думаю, имеет смысл проверить истинность условия в формуле уловного форматирования и от этого плясать.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Пытливый, я про УСЛОВНОЕ форматирование а не про заливку...  
Nerv, спасибо, но каждое условие - это частный случай, прописывать сравнение условий в процедуре по сути дублировать форматирование.    
 
Неужели нет свойства указывающего на выполнение условия форматирования?
 
>>но каждое условие - это частный случай  
Насколько частный? Можно пример.  
 
>>Неужели нет свойства указывающего на выполнение условия форматирования?  
С самого начала понял к чему Вы клоните) Информацией на этот счет (в данный момент) не располагаю.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Повторяю - условия на листе не известны (произвольны). Есть только визуальное отображение условного форматирования (цвет).
 
У меня получилась вот такая акробатика
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Если надумаете пользоваться, условие If .Count Then - можно исключить : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Аха-ха) Вот, что бывает, если "лЯпить" в обед. Получить палитру - эт конечно хорошо, но в данном случае не применимо. Сейчас попытаюсь исправиться ^_^
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Думаю, Вам будет полезно это http://www.cpearson.com/excel/CFColors.htm
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Если известно, что "условие в УФ" 1 (одно), думаю, будет достаточно функции, кот. я приводил выше +  
 
Sub io()  
MsgBox ActiveCell.FormatConditions.Item(1).Interior.ColorIndex  
End Sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Уважаемый Nerv,  
 
Спасибо огромное, что Вы тратите свое время на мою задачу. Но Вы пытаетесь помочь не в том направлении. Как узнать индекс цвета форматирования для меня не вопрос, тем более я указал его в самом начале (внимательно прочитайте вопрос).  
 
За ссылку спасибо, функция ActiveCondition - попытка проверить все условия форматирования, но учитывая, что условное форматирование зачастую имеет развитые формулы я не уверен, что она с ними справится.  
 
Вопрос остается открытым - Какое свойство ячейки указывает, что данная ячейка удовлетворяет соответствующему условию условного форматирования?
 
имеется ввиду: выделить ячейки с указанным эталонным условием?
 
Я понял задачу так: одна и та же ячейка может быть отформатирована УФ по двум условиям. Требуется узнать - форматирование произведено по условию №1 или №2.
 
>>Вопрос остается открытым - Какое свойство ячейки указывает, что данная ячейка удовлетворяет соответствующему условию условного форматирования?  
 
Могу ошибаться, но - никакое : )  
 
=75359=
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
В рамках поставленного вопроса:  
 
>fColor1 = CELL.FormatConditions(1).Interior.ColorIndex  
>If Cell.FormatConditions(1).Interior.ColorIndex = fColor1 Then ' здесь должно быть условие выполнения форматирования  
 
Тогда, вы изначально не правильно пишите, ибо проверяете НЕ УСЛОВИЕ форматирования, а САМО форматирование.  
 
По тому, примеру, кот. Вы прикрепили, я уже обозначил приблизительный алгоритм (который видится мне) исходя из того, что условие УФ = 1. Т.е. выполнено ли условие, при кот. срабатывает УФ и меняется цвет заливки ячейки.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=VovaK}{date=02.09.2011 01:02}{thema=}{post}Повторяю - условия на листе не известны (произвольны). Есть только визуальное отображение условного форматирования (цвет).{/post}{/quote}  
 
навскидку....  
 
ячейке каждого цвета даете название.  
Даёте название каждому из всевозможных стилей условного форматирования.  
через If... elseif ... end if сравниваете по одному и по второму условию. Если  оба условия соответствуют -  этой связке цвета и форматирования даёте название и запоминаете.
 
{quote}{login=Юрий М}{date=02.09.2011 04:37}{thema=}{post}Я понял задачу так: одна и та же ячейка может быть отформатирована УФ по двум условиям. Требуется узнать - форматирование произведено по условию №1 или №2.{/post}{/quote}  
 
Здравия желаю Юрий,  
 
спасибо, что откликнулись. По сути, если открыть окно Watch и просмотреть Cell.FormatConditions, то становится понятно, что коллекция содержит свойства одинаковые для всего диапазона, независимо - удовлетворяет ячейка условию или нет. Для меня было откровением, что ячейка не имеет свойства, указывающего на удовлетворение соответсвующего условного форматирования. Не нашел в коллекции и адреса диапазона форматирования...  
 
Грустно однако...
 
Спасибо Дмитрий,  
 
Я уже проштудировал Internet в поисках ответа. Нашел несколько вариантов функций по сопоставлению условий форматирования, видел Вашу надстройку. Жалко, что код закрыт, было бы познавательно.  
Для себя сделал вывод, что использовать условное форматирование для выделения ячеек для последующей обработки дело хлопотное. Проще и лучше циклом. Жалко, идея была интересной - выделить ячейки на листе по произвольному условию и произвести над ними вычисления одновременно...  
 
Еще раз спасибо,  
 
Владимир.
Страницы: 1
Читают тему
Наверх