Страницы: 1
RSS
Создание формулы для условного форматирования в VBA без символов "$"
 
Мне нужно сделать макрос, который бы помечал с помощью условного форматирования значения выпадающие из выборки.  
Собственно для проверки мной написана пользовательская функция check_ok(диапазон;ячейка)  
Для проверки "несоответствия" в формула условного форматирования для ячейки B1 у меня выглядит например:  
"=B1<>check_ok(A1:D2;B1)"  
 
Уточнение: Excel2003  
теперь собственно макрос, который должен заполнять условные форматирования автоматически  
 
Sub diap_nal1()  
   Dim cur_range As Range  
   Dim daf As Variant  
   With ActiveSheet  
       Set cur_range = Selection  
       cur_range.Activate          
       For Each cell In cur_range    
           If Not IsEmpty(cell) Then  
      daf = cur_range.Address(, , xlR1C1)  
      cell.FormatConditions.Add Type:=xlExpression, Formula1:="=RC<>check_ok(" + daf, + ";RC)"  
       cell.FormatConditions(1).Font.ColorIndex = 3      
             
       End If  
      Next cell  
   End With  
End Sub  
 
--  
 
Собственно задача выполняется. Только вот одно но:  
формула для условного форматирования возвращается в виде    
=B1<>check_ok($A$1:$E$1;B1)  
А мне нужно, что бы при "протяжке" в следующих строках и исследуемый диапазон и ячейка сдвигались. Т.е. не должно быть $  
Как сделать ?
 
Форматируйте кодом.  
Если используете VBA, есть ли смысл использовать УФ?
 
2 vikttur  
Логично! :о))  
2 metrim  
Действительно, почему в VBA ни прописать цвет залива нужного Вам диапазона при нужных Вам условиях?  
УФ - та же формула.  
И при создании большого количества диапазонов УФ они будут "грузить" Ваш файл!  
 
Удачи!
 
Как я понял, строка должна быть относительной, а столбец - нет:  
 
daf = cur_range.Address(0, , xlR1C1)
 
{quote}{login=vikttur}{date=21.09.2012 01:00}{thema=}{post}Если используете VBA, есть ли смысл использовать УФ?{/post}{/quote} Ну не знаю.  
Сначала я вроде разобрался как сделать с УФ, написал проверяющую условие функцию в ВБА. То как сие делает УФ - меня вполне устраивает и встал вопрос автоматизации заполнения УФ, который частично решился.  
 
Как сие реализовать полностью в ВБА, а главное предусмотреть все возможности - я не представляю, использование УФ дает возможность делать все поэтапно.  
 
Могу уточнить для чего мне все это:  
Есть эксперименты. Во времени снимаются точки. С повторностями.  
Соответственно есть таблица время-повторности.  
Среди точек повторностей производится выбраковка "аутлаеров" в отдельной ячейке идет подсчет нового среднего, а в таблицы, для инфомации я хочу помечать отброшенные алгоритмом ячейки.  
 
Данные могут располагаться как горизонтально, так и вертикально, а могут быть вообще выделен участок 5*6 и там произведен отбор. Я хочу сделать более менее универсальное решение.
 
2 metrim  
Можно файлик с примером?
 
> а могут быть вообще выделен участок 5*6 и там произведен отбор  
 
Тогда нельзя делать диапазон относительным! Иначе каждая ячейка из диапазона будет брать свой диапазон 5*6, в котором она является второй в первой строке.
 
{quote}{login=Казанский}{date=21.09.2012 01:07}{thema=}{post}Как я понял, строка должна быть относительной, а столбец - нет:  
 
daf = cur_range.Address(0, , xlR1C1){/post}{/quote}  
Относиельным должно быть и то и другое по моей задумке  
 
При подстановке cur_range.Address(0, , xlR1C1) в формулу УФ - ничего не подсталяется вообще. Вероятно какая то ошибка но сообщение - не выдается
 
{quote}{login=iba2004}{date=21.09.2012 01:16}{thema=}{post}2 metrim  
Можно файлик с примером?{/post}{/quote}    
Чуть попозже сделаю
 
{quote}{login=Казанский}{date=21.09.2012 01:22}{thema=}{post}> а могут быть вообще выделен участок 5*6 и там произведен отбор  
 
Тогда нельзя делать диапазон относительным! Иначе каждая ячейка из диапазона будет брать свой диапазон 5*6, в котором она является второй в первой строке.{/post}{/quote}  
Это я понимаю.  
Я просто делаю универсальный макрос "под себя", его ограничения я буду знать.  
 
Просто мне нужен макрос который заполнит моим условным форматированием любой выделеный мной диапазон.  
"Протягивать" форматирование я буду понятное дело, когда повторности идут "в линию".
Страницы: 1
Наверх