У Вас лишняя буква r прицепилась
.Interior.Color = vbRed
.Interior.Color = RGB(255, 0, 0)
.Interior.Color = 255
Работа с объектами листа медленная. Если ячеек много и заливать нужно не целым диапазоном, можно обработать в памяти и залить ячейки одной командой.
Sub PaintCells()
Dim r1 As Range, r2 As Range
Dim c As Range
Set r1 = Range("A1:C10") ' диапазон в переменную
r1.Interior.Pattern = xlNone ' убираем заливку
' r1.Interior.ColorIndex = 0 ' или так
For Each c In r1 ' цикл по ячейкам диапазона
If c.Value = 25 Then ' если условие выполняется
If r2 Is Nothing Then ' диапазон еще пустой
Set r2 = c ' формируем диапазон
Else
Set r2 = Union(r2, c) ' пополняем диапазон
End If
End If
Next c
If Not r2 Is Nothing Then r2.Interior.Color = 255 ' заливаем
Set r1 = Nothing: Set r2 = Nothing ' освобождаем память
End Sub
Залить строки по условию в ячейке:
For i = 1 To r1.Rows.Count ' цикл по строкам диапазона
If r1(i, 1).Value = 25 Then ' если левая ячейка диапазона...
If r2 Is Nothing Then ' диапазон еще пустой
Set r2 = Range(Cells(i, 1), Cells(i, 3)) ' формируем диапазон
Else
Set r2 = Union(r2, Range(Cells(i, 1), Cells(i, 3))) ' пополняем диапазон
End If
End If
Next i
Доброго времени суток, Друзья! |
|
Bema Пользователь Сообщений: 6759 |
Алексей, добрый и Вам. Обязательно нужен макрос? Можно и при помощи УФ такое сделать. Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл |
Bema
, и Вам доброго….без макроса никуда к сожалению |
|
Bema Пользователь Сообщений: 6759 |
Дело хозяйское Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл |
А если бы в макросе были бы еще комментарии что за что отвечает и счетчик сколько то или иное условие встречалось ранее(вывод счетчика в той же окрашенной ячейки), то этот макрос был бы очень хорошим) |
|
Kuzmich Пользователь Сообщений: 7998 |
Сделайте небольшой пример |
Kuzmich
, возможности сделать хотя бы очень маленький пример не имею т.к. незнаю как… |
|
Kuzmich Пользователь Сообщений: 7998 |
#8 05.07.2017 21:36:15 Макрос (в модуль листа) срабатывает на изменение значений в ячейках столбцов H:O
|
||
Kuzmich
, спасибо большое, но у меня чего-то не работает)))) Kuzmich , скажите, а этот счетчик можно вывести именно в ту ячейку которая должна окрасится? Изменено: Aleksey.g84 — 05.07.2017 21:54:57 |
|
Kuzmich Пользователь Сообщений: 7998 |
#10 05.07.2017 22:23:05
Скопируйте и вставьте код при русской раскладке клавиатуры |
||
Kuzmich
, не помогает смена раскладки…. |
|
Kuzmich Пользователь Сообщений: 7998 |
|
Kuzmich
, грешу все таки на то, что у меня макбук… |
|
Kuzmich Пользователь Сообщений: 7998 |
#14 05.07.2017 23:11:29 Сравните ваши строки в макросе
И то, что у меня в примере Изменено: Kuzmich — 05.07.2017 23:27:50 |
||
Aleksey.g84 Пользователь Сообщений: 80 |
#15 05.07.2017 23:14:30 совершенно идентичны…
|
||
Kuzmich Пользователь Сообщений: 7998 |
У вас в коде «_7», «_4» и «_10» |
И все же Kuzmich продолжаю грешить на то, что у меня макбук….сделал как вы сказали…скопировал прямо из книги в редактор…сохранил и ничего))) |
|
Kuzmich Пользователь Сообщений: 7998 |
Мой пример из сообщения 12 у вас работает? |
Kuzmich
, к сожалению нет…. |
|
vikttur Пользователь Сообщений: 47199 |
Для MAC есть отдельная ветка форума. |
Kuzmich Пользователь Сообщений: 7998 |
#21 05.07.2017 23:37:30
Не надо ничего нажимать. Sub iSumma() это от другого примера |
||
vikttur
, прекрасно вас понимаю…но на данный момент это похоже на расизм….аааа…у тебя мак…пошел вон от сюда… |
|
Aleksey.g84 Пользователь Сообщений: 80 |
#23 05.07.2017 23:42:56 Kuzmich
, немного поменял код…
получилось ничего) Прикрепленные файлы
|
||
Kuzmich Пользователь Сообщений: 7998 |
Вы сделали то, что я вам говорил в #16 ? |
Obelisk Пользователь Сообщений: 49 |
У меня так получилось, все работает: |
vikttur Пользователь Сообщений: 47199 |
#26 05.07.2017 23:49:36
Да при чем здесь рассизм?! MAC имеет отличия в работе с VBA |
||
Kuzmich
, совершенно верно….сейчас еще раз повторил…. |
|
vikttur
, не принимайте близко))) |
|
Kuzmich Пользователь Сообщений: 7998 |
#29 05.07.2017 23:56:38 Obelisk
Ваш макрос только для первой строки
|
||
Obelisk Пользователь Сообщений: 49 |
#30 05.07.2017 23:58:27
я так понял.. |
||
Заливка ячейки цветом в VBA Excel. Фон ячейки. Свойства .Interior.Color и .Interior.ColorIndex. Цветовая модель RGB. Стандартная палитра. Очистка фона ячейки.
Свойство .Interior.Color объекта Range
Начиная с Excel 2007 основным способом заливки диапазона или отдельной ячейки цветом (зарисовки, добавления, изменения фона) является использование свойства .Interior.Color объекта Range путем присваивания ему значения цвета в виде десятичного числа от 0 до 16777215 (всего 16777216 цветов).
Заливка ячейки цветом в VBA Excel
Пример кода 1:
Sub ColorTest1() Range(«A1»).Interior.Color = 31569 Range(«A4:D8»).Interior.Color = 4569325 Range(«C12:D17»).Cells(4).Interior.Color = 568569 Cells(3, 6).Interior.Color = 12659 End Sub |
Поместите пример кода в свой программный модуль и нажмите кнопку на панели инструментов «Run Sub» или на клавиатуре «F5», курсор должен быть внутри выполняемой программы. На активном листе Excel ячейки и диапазон, выбранные в коде, окрасятся в соответствующие цвета.
Есть один интересный нюанс: если присвоить свойству .Interior.Color отрицательное значение от -16777215 до -1, то цвет будет соответствовать значению, равному сумме максимального значения палитры (16777215) и присвоенного отрицательного значения. Например, заливка всех трех ячеек после выполнения следующего кода будет одинакова:
Sub ColorTest11() Cells(1, 1).Interior.Color = —12207890 Cells(2, 1).Interior.Color = 16777215 + (—12207890) Cells(3, 1).Interior.Color = 4569325 End Sub |
Проверено в Excel 2016.
Вывод сообщений о числовых значениях цветов
Числовые значения цветов запомнить невозможно, поэтому часто возникает вопрос о том, как узнать числовое значение фона ячейки. Следующий код VBA Excel выводит сообщения о числовых значениях присвоенных ранее цветов.
Пример кода 2:
Sub ColorTest2() MsgBox Range(«A1»).Interior.Color MsgBox Range(«A4:D8»).Interior.Color MsgBox Range(«C12:D17»).Cells(4).Interior.Color MsgBox Cells(3, 6).Interior.Color End Sub |
Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.
Использование предопределенных констант
В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:
Предопределенная константа | Наименование цвета |
---|---|
vbBlack | Черный |
vbBlue | Голубой |
vbCyan | Бирюзовый |
vbGreen | Зеленый |
vbMagenta | Пурпурный |
vbRed | Красный |
vbWhite | Белый |
vbYellow | Желтый |
xlNone | Нет заливки |
Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:
Пример кода 3:
Range(«A1»).Interior.Color = vbGreen |
Цветовая модель RGB
Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 — это черный цвет, если все значения равны 255 — это белый цвет.
Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:
Палитра Excel
Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений RGB, их необходимо перевести в десятичное число, обозначающее цвет. Для этого существует функция VBA Excel, которая так и называется — RGB.
Пример кода 4:
Range(«A1»).Interior.Color = RGB(100, 150, 200) |
Список стандартных цветов с RGB-кодами смотрите в статье: HTML. Коды и названия цветов.
Очистка ячейки (диапазона) от заливки
Для очистки ячейки (диапазона) от заливки используется константа xlNone
:
Range(«A1»).Interior.Color = xlNone |
Свойство .Interior.ColorIndex объекта Range
До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства .Interior.ColorIndex:
Пример кода 5:
Range(«A1»).Interior.ColorIndex = 8 MsgBox Range(«A1»).Interior.ColorIndex |
Просмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:
Пример кода 6:
Sub ColorIndex() Dim i As Byte For i = 1 To 56 Cells(i, 1).Interior.ColorIndex = i Next End Sub |
Номера строк активного листа от 1 до 56 будут соответствовать индексу цвета, а ячейка в первом столбце будет залита соответствующим индексу фоном.
Подробнее о стандартной палитре Excel смотрите в статье: Стандартная палитра из 56 цветов, а также о том, как добавить узор в ячейку.
1 / 1 / 0 Регистрация: 10.12.2011 Сообщений: 7 |
|
1 |
|
Закрасить ячейки определенным цветом в зависимости от содержимого26.10.2012, 10:09. Показов 83419. Ответов 23
Здравствуйте. Я не могу разобраться в создании программы.
1 |
Catstail Модератор 34707 / 19228 / 4039 Регистрация: 12.02.2012 Сообщений: 32,190 Записей в блоге: 13 |
||||
26.10.2012, 10:25 |
2 |
|||
2 |
1 / 1 / 0 Регистрация: 10.12.2011 Сообщений: 7 |
|
26.10.2012, 10:32 [ТС] |
3 |
Catstail, а можно по-подробнее? Описать каждую строчку) А то ещё сплю на ходу)
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||
26.10.2012, 10:33 |
4 |
|
Условное форматирование не подойдет? Вложения
0 |
1 / 1 / 0 Регистрация: 10.12.2011 Сообщений: 7 |
|
26.10.2012, 10:40 [ТС] |
5 |
Условное форматирование не подойдет? Извините, но нет. Хотя мб и пойдёт, мне нужен код. Я не давно начал изучать VBA, и поэтому желательно с пояснениями.
0 |
Catstail Модератор 34707 / 19228 / 4039 Регистрация: 12.02.2012 Сообщений: 32,190 Записей в блоге: 13 |
||||||||
26.10.2012, 11:57 |
6 |
|||||||
Вот запускающая процедура:
1 |
Модератор 34707 / 19228 / 4039 Регистрация: 12.02.2012 Сообщений: 32,190 Записей в блоге: 13 |
|
26.10.2012, 12:03 |
7 |
Вот и картинка: Изображения
0 |
Hugo121 6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
||||||||
26.10.2012, 13:16 |
8 |
|||||||
Добавлено через 9 минут
4 |
Модератор 34707 / 19228 / 4039 Регистрация: 12.02.2012 Сообщений: 32,190 Записей в блоге: 13 |
|
26.10.2012, 14:39 |
9 |
Либо тоже самое короче, но непонятнее: — а если числа и строки будут расположены по-другому, Ваш код раскрасит их правильно (в соотв. с заданием TC)?
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||||||
26.10.2012, 15:35 |
10 |
|||||||
— Условное форматирование не подойдет? Код для применения УФ к выделенному диапазону. Получен правкой кода макрорекордера:
В файле поста #4 было 2 условия УФ, т.е. ячейки изначально имели зеленый фон. Здесь я добавил зеленую заливку в условие УФ. Теперь ячейки, содержащие значение ошибки (это не число, не текст и не пусто) будут оставаться неокрашенными. Добавлено через 10 минут
— а если числа и строки будут расположены по-другому, Ваш код раскрасит их правильно (в соотв. с заданием TC)? Да. С кодом Hugo121 другие проблемы:
1 |
1 / 1 / 0 Регистрация: 10.12.2011 Сообщений: 7 |
|
30.10.2012, 23:17 [ТС] |
11 |
Всем доброго времени суток. Не могу понять, что написать для того что бы закрашивались ячейки, в зависимости от содержимого. Приложен файл. Лучше всего писать коды в нём. Заранее благодарю
0 |
1177 / 419 / 106 Регистрация: 31.03.2012 Сообщений: 1,138 |
|
31.10.2012, 10:34 |
12 |
А что мешает поставить правильную задачу в соответствии правилами форума, в частности с п. 4.1
Приложен файл. Лучше всего писать коды в нём. Куда приложен?, где лучше писАть коды? Не по теме: PS. никак не смог избавиться от цитирования cyberforum.ru в качестве ссылки для указания в качестве поисковой строки, потому использовал вместо настоящего пробела — это слово в скобках
0 |
5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
|
31.10.2012, 11:48 |
13 |
Никогда не пользуюсь поиском на этом форуме, т.к. невозможно ничего найти.
0 |
Catstail Модератор 34707 / 19228 / 4039 Регистрация: 12.02.2012 Сообщений: 32,190 Записей в блоге: 13 |
||||
31.10.2012, 12:18 |
14 |
|||
Да. С кодом Hugo121 другие проблемы: Да??? Я про вот этот код:
Хотя, действительно ДА. Я неправ…
0 |
1 / 1 / 0 Регистрация: 10.12.2011 Сообщений: 7 |
|
31.10.2012, 12:44 [ТС] |
15 |
Вот он(файл)
0 |
1 / 1 / 0 Регистрация: 03.12.2014 Сообщений: 329 |
|
27.05.2015, 13:34 |
16 |
Catstail, пожалуйста, можно палитру цветов с кодами (если их много)
0 |
Модератор 34707 / 19228 / 4039 Регистрация: 12.02.2012 Сообщений: 32,190 Записей в блоге: 13 |
|
27.05.2015, 14:24 |
17 |
1 |
1 / 1 / 0 Регистрация: 03.12.2014 Сообщений: 329 |
|
27.05.2015, 14:24 |
18 |
Так это же иконки, а мне нужна заливка ячеек
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
|
27.05.2015, 14:26 |
19 |
Так это же иконки, а мне нужна заливка ячеек смотрите лист КОДЫ левее иконок.
0 |
1 / 1 / 0 Регистрация: 03.12.2014 Сообщений: 329 |
|
27.05.2015, 16:27 |
20 |
нашла, спасибо. открывала коды-0 Добавлено через 1 час 54 минуты
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
27.05.2015, 16:27 |
20 |
Закрасить ячейки по условию VBA |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |