Условное форматирование с более чем тремя условиями!

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

SANYA
Сообщения: 4
Зарегистрирован: 10 май 2006, 19:16

Драсте Камрады!!!

Нашел на просторах Инета макрос на выполнение условного форматирования с более чем тремя условиями, но к сожалению не могу его заставить работать. (( Буду очень благодарен если ктонить реализует его в файлике Excel и выложет на форуме.

Пасибо.

Собсно сам макрос:

Код: Выделить всё

По сути, макрос Worksheet_Change дублирует функцию условного форматирования Excel. Увеличение максимального числа условий достигается за счет наличия управляющего листа, содержащего 2 столбца допустимых значений ячеек (столбец A) и соответствующих индексов цвета заливки (столбец B).
Private Sub Worksheet_Change(ByVal Target As Range)
' Этот макрос реализует условное форматирование
' с более чем 3-мя условиями.
Dim rng As Range
' Исходный диапазон может содержать более чем 1 ячейку,
' поскольку он задается как пересечение диапазонов Target
' и D:D. Благодаря этому макрос будет выполняться корректно
' при удалении содержимого нескольких ячеек столбца D или
' вводе значений нескольких ячеек столбца D в виде массива.
Set rng = Intersect(Target, Range("D:D"))
If rng Is Nothing Then
Exit Sub
Else
Dim cl As Range
For Each cl In rng
On Error Resume Next
' Если содержимое ячейки отсутствует
' в диапазоне rngColors, ее заливка удаляется.
cl.Interior.ColorIndex = _
Application.WorksheetFunction.VLookup(cl.Value, _
ThisWorkbook.Sheets("УФ (управляющий лист)").Range("rngColors"), _
2, False)
If Err.Number <> 0 Then
cl.Interior.ColorIndex = xlNone
End If
Next cl
End If
End Sub
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Если ещё не передумали, то можете скачать здесь …
SANYA
Сообщения: 4
Зарегистрирован: 10 май 2006, 19:16

Спасибо большое, то что нужно.

Есть еще вопрос как сделать чтоб макрос брал значение из столбца F, а выделял бы ячейку в столбце D (или выделял бы ячейки и D и в F)
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Замените "D:D" на "F:F", а cl.Interior на cl.Item(1, -1).Interior
SANYA
Сообщения: 4
Зарегистрирован: 10 май 2006, 19:16

Спасибо огромное за помощь... сработало...
Как можно было понять сам я в ВБА ни бильмеса (((

Буду рад за любую предложенную литературу по ВБА в эл виде.

Ссылки приветствуются
SANYA
Сообщения: 4
Зарегистрирован: 10 май 2006, 19:16

Сорри канешь за тупые вопросы, но еще необходимо чтоб выделялась ячейка и в F столбце и в D, если не затруднит подскажите ПЛЗ.
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

В таком случае замените cl.Interior на Range(cl.Address & "," & cl.Item(1, -1).Address).Interior или Union(cl, cl.Item(1, -1)).Interior или измените заливку ячейки сначала в одной ячейке, а затем в другой. P.S. По поводу ссылок можете написать мне в приват.
Daroteya
Сообщения: 13
Зарегистрирован: 26 янв 2007, 13:04

С данными в примере пятью цветами оно работает, но если добавить условие - не реагирует :( , что нужно добавить в макросе? и что за цифры в УФ в ячейках с цветом написаны, может в новом условии тоже нужно какой-то код ставить?
Подскажите пожалуйста - жизненно необходимо
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

В ячейках с цветом собственно и указан ColorIndex. А если Вы хотите изменить данный макрос, то можете писать мне напрямую (контактный адрес теперь наличествует в примере, нужно только скачать его повторно)
Uralmaster
Сообщения: 5
Зарегистрирован: 20 янв 2011, 12:57

А как еще сделать чтоб шрифт в темной заливке был не черный а
другого цвета(белый или красный и тд) те
управление цветом шрифта добавить в макрос ?
Ответить