У Вас лишняя буква 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
Заливка ячейки цветом в 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 цветов, а также о том, как добавить узор в ячейку.
Содержание
- Использование макроса для применения формата заливки ячеек ко всем другим строкам в выбранном диапазоне в Excel
- Аннотация
- Дополнительная информация
- Пример процедуры Visual Basic
- Макросы для изменения формата ячеек в таблице Excel
- VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк
- Описание VBA-макроса для формата ячеек таблицы Excel
- Модификация исходного кода макроса для форматирования
- VBA Excel. Цвет ячейки (заливка, фон)
- Свойство .Interior.Color объекта Range
- Заливка ячейки цветом в VBA Excel
- Вывод сообщений о числовых значениях цветов
- Использование предопределенных констант
- Цветовая модель RGB
- Очистка ячейки (диапазона) от заливки
- Свойство .Interior.ColorIndex объекта Range
- 86 комментариев для “VBA Excel. Цвет ячейки (заливка, фон)”
Использование макроса для применения формата заливки ячеек ко всем другим строкам в выбранном диапазоне в Excel
Аннотация
Microsoft Excel автоматически форматирует новые данные, которые вы введите в конце списка, в соответствии с предыдущими строками. Вы также можете отформатировать список программным способом. В этой статье приведен пример процедуры Microsoft Visual Basic для приложений для затенение каждой другой строки в выделенном фрагменте.
Дополнительная информация
Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена.
Чтобы просмотреть шаблоны, доступные в Microsoft Office Excel 2003 и более ранних версиях, щелкните «Ячейки» в меню «Формат» и откройте вкладку «Шаблоны«.
Чтобы просмотреть шаблоны, доступные в Microsoft Office Excel 2007, выполните следующие действия.
- На вкладке «Главная » щелкните «Формат » в группе «Ячейки «. Затем нажмите кнопку «Формат ячеек».
- В диалоговом окне «Формат ячеек» откройте вкладку «Заливка «.
В раскрывающемся списке «Шаблон» отображаются доступные шаблоны. Шаблон, используемый в следующем макросе, который называется постоянным именем xlGray16, является пятым справа в первой строке.
Следующий макрос задает для каждой другой строки текущего выделения значение xlGray16.
Пример процедуры Visual Basic
Этот макрос выполняется только в строках выбранного диапазона. При добавлении новых строк данных после выполнения макроса необходимо снова запустить макрос, выбрав все новые строки данных.
Этот процесс также можно выполнить вручную с помощью условного форматирования.
Дополнительные сведения о форматировании каждой другой строки с помощью условного форматирования см. в разделе «Применение заливки к альтернативным строкам на листе».
Вы также можете отформатировать список с помощью команды меню «Автоформат «. В Excel 2003 и Microsoft Excel 2002 команда меню «Автоформат» находится в меню «Формат«. В Excel 2007 необходимо добавить команду меню «Автоформат» на панель быстрого доступа. Для этого выполните следующие действия:
- Нажмите кнопку Microsoft Office, а затем нажмите кнопку «Параметры Excel».
- Нажмите кнопку «Настройка конструктора».
- Щелкните, чтобы выбрать все команды в разделе «Выбрать команды».
- Нажмите кнопку «Автоформат«, нажмите кнопку «Добавить» и нажмите кнопку » ОК».
Источник
Макросы для изменения формата ячеек в таблице Excel
В данном примере описаны макросы для автоматического форматирования или спроса формата для ячеек таблиц Excel средствами VBA.
VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк
В процессе запыления данных сотрудниками отдела на некоторых листах были изменены форматы ячеек:
Необходимо сбросить форматирование ячеек и сделать так чтобы на всех таблицах планов выполнения работ были одинаковые форматы отображения данных. Формат ячеек для исходной таблицы должен быть закреплен за шаблоном, чтобы можно было сделать сброс и применять заданный стиль оформления в дальнейшем.
Чтобы выполнять такие задачи вручную можно попытаться облегчить процесс настройки множества опций форматирования для многих диапазонов ячеек на разных листах и рабочих книгах. Плюс к о всему можно ошибиться и применить несколько другие настройки форматирования.
Макросы Excel прекрасно справляются с форматированием ячеек на рабочих листах. Кроме того, делают это быстро и в полностью автоматическом режиме. Воспользуемся этими преимуществами и для решения данной задачи напишем свой код VBA-макроса. Он поможет нам быстро и безопасно сбрасывать форматы на исходный предварительно заданный в шаблоне главной таблицы.
Чтобы написать свой код макроса откройте специальный VBA-редактор в Excel: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» или нажмите комбинацию клавиш ALT+F11:
В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него такой VBA-код макроса:
Sub SbrosFormat()
If TypeName(Selection) <> «Range» Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
End With
End Sub
Теперь если нам нужно сбросить форматирование таблицы на исходный формат отображения ее данных, выделите диапазон ячеек A1:E20 и запустите макрос: «РАЗРАБОЧТИК»-«Код»-«Макросы»-«SbrosFormat»-«Выполнить». Результат работы макроса изображен ниже на рисунке:
Таблица приобрела формат, который определен макросом. Таким образом код VBA нам позволяет сбросить любые изменения формата ячеек на предустановленный автором отчета.
Описание VBA-макроса для формата ячеек таблицы Excel
Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:
- Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
- Включен построчный перенос текста.
- Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
- Сброс цвета шрифта на авто.
- Удаляется любая заливка ячеек.
- Ширина столбцов автоматически настраивается под текст в ячейках.
- Автоматически настроить высоту строк по содержимому ячеек.
Модификация исходного кода макроса для форматирования
Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу xlHAlignCenter на xlHAlignRight. Она находиться в свойстве .HorizontalAlignment. Сделайте это следующим образом:
Таким же образом можно выровнять текст по левую сторону изменив значение константы на xlHAlignLeft. Или можно выровнять положение текста по ширине ячейки используя константу xlHAlignJustify.
Чтобы макрос выравнивал текст в ячейках по вертикали к низу, измените строку кода, отвечающую за данную настройку форматирования. Измените константу, которая присваивается к свойству VerticalAlignment в следующий способ:
Если хотите выровнять текс к верху ячейки, тогда воспользуйтесь константой xlHAlignTop.
Если нужно применить для границ ячеек толстую и пунктирную линию в синем цвете, смодифицируйте инструкцию, отвечающую за формат линий:
Описание настройки форматирования для линий границ ячеек. Мы будем получать разные дополнительные типы линий границ если для свойства LineStyle присваивать такие константы:
- xlDoshDot – применяется для рисования пунктирных линий в границах ячеек;
- xlDouble – рисует двойную линию;
- xlHairLine – рисует тонкую линию;
- xlThick – для рисования очень толстой линии.
Для настройки цвета линий Excel предлагает всего 8 констант для определенных цветов. Константы для настройки цвета линий границ для свойства Color:
- vbBlack – черный;
- vbWhite – белый;
- vbRed – красный;
- vbGreen –зеленый;
- vbBlue – синий;
- vbYellow – желтый;
- vbMagenta – алый;
- vbCyan – голубой.
Но при необходимости присвоить линиям границ другие цвета можно вместо константы для свойства Color записать функцию RGB(). Достаточно лишь в аргументе этой функции указать код цвета по шкале от 0 и до 255.
Если нужно применить толстую линию только для границ выделенного диапазона, тогда перед инструкцией End With добавьте следующую строку кода:
.BorderAround xlContinuous, xlMedium, vbBlack
Описание: В первом аргументе для метода BorderAround можно записать также другой стиль линии. Во втором – толщину линии, а в третьем – цвет. Константы, которые можно присвоить в качестве значений для этих аргументов можно использовать те же, которые мы использовали для свойств: LineStyle, Weight, Color.
Если нужно экспонировать первую строку для выделенного диапазона с помощью жирного и курсивного шрифта значений ячеек. А также заполнить ячейки первой строки заливкой с голубым цветом, тогда в самом конце кода макроса перед последней инструкцией End Sub следует добавить несколько строк с VBA-кодом:
Если хотите присвоить такой же формат для не только для первой строки, но и для первого столбца выделенного диапазона, тогда скопируйте и вставьте ниже эти 3 строчки кода. После в последних трех строках измените свойство Rows на Columns.
.Columns (1).Font.Bold = True
.Columns (1).Font.Italic = True
.Columns (1).Interior.Color = vbCyan
Если нужно задать особенный формат для экспонирования последней строки выделенного диапазона, тогда измените число 1 в аргументе свойства Rows на число всех выделенных строк .Rows.Count. Например, добавьте в конец кода еще такую строку:
Полная версия модифицированного кода макроса выглядит так:
Sub SbrosFormat()
If TypeName(Selection) <> «Range» Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlDash
.Borders.Color = vbBlue
.Borders.Weight = xlMedium
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
.BorderAround xlContinuous, xlMedium, vbBlack
.Rows(1).Font.Bold = True
.Rows(1).Font.Italic = True
.Rows(1).Interior.Color = vbCyan
.Columns(1).Font.Bold = True
.Columns(1).Font.Italic = True
.Columns(1).Interior.Color = vbCyan
.Rows(.Rows.Count).Font.Bold = True
End With
End Sub
Пример работы измененного кода VBA-макроса:
В данном примере вы ознакомились с базовыми возможностями форматирования с помощью VBA-макросов. Уверен, что теперь вы сможете самостоятельно найти практическое применение этим исходным кодам.
Источник
VBA Excel. Цвет ячейки (заливка, фон)
Заливка ячейки цветом в VBA Excel. Фон ячейки. Свойства .Interior.Color и .Interior.ColorIndex. Цветовая модель RGB. Стандартная палитра. Очистка фона ячейки.
Свойство .Interior.Color объекта Range
Начиная с Excel 2007 основным способом заливки диапазона или отдельной ячейки цветом (зарисовки, добавления, изменения фона) является использование свойства .Interior.Color объекта Range путем присваивания ему значения цвета в виде десятичного числа от 0 до 16777215 (всего 16777216 цветов).
Заливка ячейки цветом в VBA Excel
Пример кода 1:
Поместите пример кода в свой программный модуль и нажмите кнопку на панели инструментов «Run Sub» или на клавиатуре «F5», курсор должен быть внутри выполняемой программы. На активном листе Excel ячейки и диапазон, выбранные в коде, окрасятся в соответствующие цвета.
Есть один интересный нюанс: если присвоить свойству .Interior.Color отрицательное значение от -16777215 до -1, то цвет будет соответствовать значению, равному сумме максимального значения палитры (16777215) и присвоенного отрицательного значения. Например, заливка всех трех ячеек после выполнения следующего кода будет одинакова:
Проверено в Excel 2016.
Вывод сообщений о числовых значениях цветов
Числовые значения цветов запомнить невозможно, поэтому часто возникает вопрос о том, как узнать числовое значение фона ячейки. Следующий код VBA Excel выводит сообщения о числовых значениях присвоенных ранее цветов.
Пример кода 2:
Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.
Использование предопределенных констант
В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:
Предопределенная константа | Наименование цвета |
---|---|
vbBlack | Черный |
vbBlue | Голубой |
vbCyan | Бирюзовый |
vbGreen | Зеленый |
vbMagenta | Пурпурный |
vbRed | Красный |
vbWhite | Белый |
vbYellow | Желтый |
xlNone | Нет заливки |
Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:
Пример кода 3:
Цветовая модель RGB
Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 — это черный цвет, если все значения равны 255 — это белый цвет.
Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:
Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений RGB, их необходимо перевести в десятичное число, обозначающее цвет. Для этого существует функция VBA Excel, которая так и называется — RGB.
Пример кода 4:
Список стандартных цветов с RGB-кодами смотрите в статье: HTML. Коды и названия цветов.
Очистка ячейки (диапазона) от заливки
Для очистки ячейки (диапазона) от заливки используется константа xlNone :
Свойство .Interior.ColorIndex объекта Range
До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства .Interior.ColorIndex:
Пример кода 5:
Просмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:
Пример кода 6:
Номера строк активного листа от 1 до 56 будут соответствовать индексу цвета, а ячейка в первом столбце будет залита соответствующим индексу фоном.
Подробнее о стандартной палитре Excel смотрите в статье: Стандартная палитра из 56 цветов, а также о том, как добавить узор в ячейку.
86 комментариев для “VBA Excel. Цвет ячейки (заливка, фон)”
Спасибо, наконец то разобрался во всех перипетиях заливки и цвета шрифта.
Пожалуйста, Виктор. Очень рад, что статья пригодилась.
как проверить наличие фона?
Привет, Надежда!
Фон у ячейки есть всегда, по умолчанию — белый. Отсутствие цветного фона можно определить, проверив, является ли цвет ячейки белым:
Подскажите пожалуйста, как можно посчитать количество залитых определенным цветом ячеек в таблице?
Привет, Иван!
Посчитать ячейки с одинаковым фоном можно с помощью цикла.
Для реализации этого примера сначала выбираем в таблице ячейку с нужным цветом заливки. Затем запускаем код, который определяет цветовой индекс фона активной ячейки, диапазон таблицы вокруг нее и общее количество ячеек с такой заливкой в таблице.
Каким образом можно использовать не в процедуре, а именно в пользовательской функции VBA свойство .Interior.Color?
Скажем, проверять функцией значение какой-то ячейки и подкрашивать ячейку в зависимости от этого.
Фарин, пользовательская функция VBA предназначена только для возврата вычисленного значения в ячейку, в которой она расположена. Она не позволяет внутри себя менять формат своей ячейки, а также значения и форматы других ячеек.
Однако, с помощью пользовательской функции VBA можно вывести значения свойств ячейки, в которой она размещена:
В сети есть эксперименты по изменению значений других ячеек из пользовательской функции VBA, но они могут работать нестабильно и приводить к ошибкам.
Для подкрашивания ячейки в зависимости от ее значения используйте процедуру Sub или штатный инструмент Excel – условное форматирование.
а как можно закрасить только пустые ячейки ?
Лев, закрасить пустые ячейки можно с помощью цикла For Each… Next:
Евгений, спасибо за ссылку на интересный прием.
Евгений, день добрый.
Подскажите пожалуйста, как назначить ячейке цвет через значение RGB, которое в ней записано. Или цвет другой ячейки.
Привет, Александр!
Используйте функцию InStr, чтобы найти положение разделителей, а дальше функции Left и Mid. Смотрите пример с пробелом в качестве разделителя:
Или еще проще с помощью функции Split:
Добрый день!
подскажите, пожалуйста, как можно выводить из таблицы (150 столбцов х 150 строк) адрес ячеек (списком), если они имеют заливку определенного цвета.
Заранее спасибо!
Привет, Валентина!
Используйте два цикла For…Next. Определить числовой код цвета можно с помощью выделения одной из ячеек с нужным цветом.
столбец «D» имеет разноцветную заливку
надо справа от зеленой ячейки написать «Да»
Каким-то образом надо узнать числовое значение цвета, если он не стандартный — vbGreen. Например, можно выделить ячейку с нужным цветом и записать числовое значение цвета в переменную:
Евгений, спасибо за подсказку.
Все получилось
добрый день! подскажите, пожалуйста, как сделать, чтобы результаты выводились на отдельный лист ?
заранее спасибо!
Валентина, замените в коде имя «Лист2» на имя своего листа.
Евгений. Долгое время мучаюсь реализацией следующего сценария: в таблице Excel, которая является базой данных пациентов отделения есть столбец «G» в котором лаборанты отмечают исследования выполненные с контрастом «(С+)» и без «(C-)» и далее в столбце «N» они отмечаются количество использованного контраста «от 50мл до 200мл»; для удобства ввода и уменьшения числа непреднамеренных ошибок в столбцах реализована функция проверки данных что бы сотрудники могли выбирать уже готовые значения из списка и если ошибутся то выскочит ошибка; тем не менее сотрудники умудряются при заполнении таблицы не вносить количество использованного контраста. Вопрос заключается в том, как подкрасить ячейку для ввода количества контраста красным цветом при условии, что в ячейке столбца G фигурирует (С+) с целью акцентировать на этом внимание.
Заранее спасибо за ответ.
Добрый день, Алексей!
Примените условное форматирование:
1 Выберите столбец «N».
2 На вкладке ленты «Главная» перейдите по ссылкам «Условное форматирование» «Создать правило».
3 В открывшемся окне выберите тип правила: «Использовать формулу для определения форматируемых ячеек».
4 В строку формул вставьте =И(ЕСЛИ(G1=»(C+)»;1);ЕСЛИ(N1=»»;1)) . Буква «C» должна быть из одной раскладки (ENG или РУС) в формуле и в ячейке.
5 Нажмите кнопку «Формат» и на вкладке «Заливка» выберите красный цвет.
6 Закройте все окна, нажимая «OK».
Если в ячейке столбца «G» будет выбрано «(С+)», то ячейка той же строки в столбце «N» подкрасится красным цветом. После ввода значения в ячейку столбца «N», ее цвет изменится на первоначальный.
Спасибо Евгений! Ваш пример многое прояснил (в т.ч надо читать Уокенбаха и не филонить). Мне удалось заставить работать этот сценарий не так изящно как у Вас т.е создал для каждой отдельной переменной свое правило: пр. для ГМ. (С+) —> =ЕСЛИ(И(G5066=»ГМ. (С+)»;N5066=»»);»Истина»;»Ложь»)
МТ. (С+) —> =ЕСЛИ(И(G5066=»МТ. (С+)»;N5066=»»);»Истина»;»Ложь») и т.д всего 8 правил для каждого конкретного случая.
И применил их всех для столбца N:N
Ячейку G взял произвольно и в дальнейшем вообще убрал ее на лист метаданных (диапазоны переменных типа ГМ. (С+), МТ. (С+)…)
Еще раз благодарю за помощь! а есть возможность тоже самое сделать цикличным скриптом VBA ? (или я сморозил…).
Заранее спасибо за ответ.
Источник
alcnwndrlnd Пользователь Сообщений: 44 |
#1 08.12.2015 10:03:45 Всем привет!
Уж больно здесь красиво, жди беды.. |
|
vdovin_sg Пользователь Сообщений: 58 |
А почему бы не воспользоваться условным форматированием? Можно выделить нужный столбец и задать в разделе условное форматирование нужные условия. Сколько необходимо! |
vdovin_sg, хотелось бы макросом как-то автоматизировать процесс, нажатием одной кнопки, так сказать, а условное форматирование каждый раз добавлять. Уж больно здесь красиво, жди беды.. |
|
vdovin_sg Пользователь Сообщений: 58 |
alcnwndrlnd, Ясно, в макросах я не силен, сам только учусь. |
vdovin_sg, вот и я тоже, пока что Уж больно здесь красиво, жди беды.. |
|
vdovin_sg Пользователь Сообщений: 58 |
#6 08.12.2015 10:29:55 а если попробовать использовать цикл for a=1 to 500
|
||
vdovin_sg, идея хорошая, а что делать с проверкой нескольких значений? в разных else if — ах расписать только если Уж больно здесь красиво, жди беды.. |
|
Kuzmich Пользователь Сообщений: 7998 |
#8 08.12.2015 10:52:25
|
||
k61 Пользователь Сообщений: 2441 |
#9 08.12.2015 10:56:17
|
||
Kuzmich, k61, тааак, спасибо, сейчас поразбираюсь.. в принципе реально вставить вместо «1» и «2» текстовые значения? Уж больно здесь красиво, жди беды.. |
|
Kuzmich Пользователь Сообщений: 7998 |
|
alcnwndrlnd Пользователь Сообщений: 44 |
#12 08.12.2015 11:27:25 Kuzmich, в таком случае, подскажите, пожалуйста, синтаксис. Как-то надо сослаться на текстовое значение? Ох уж этот ВБА, с++ и то легче.. голова уже кругом
Изменено: alcnwndrlnd — 08.12.2015 11:27:44 Уж больно здесь красиво, жди беды.. |
||
Kuzmich Пользователь Сообщений: 7998 |
А что не получается. Строку с «раму» видимо надо посветить другим цветом (6 заменить) |
Kuzmich, да, проблема была именно в этом, макрос просто не выполнялся Уж больно здесь красиво, жди беды.. |
|
alcnwndrlnd Пользователь Сообщений: 44 |
#15 08.12.2015 11:47:50 Kuzmich, и, наверное, последний вопрос.. Возможно, глупый: как проверить несколько значений и раскрасить одним цветом:
Изменено: alcnwndrlnd — 08.12.2015 11:48:18 Уж больно здесь красиво, жди беды.. |
||
Kuzmich Пользователь Сообщений: 7998 |
#16 08.12.2015 11:51:05
|
||
Kuzmich, «а ларчик просто открывался» Уж больно здесь красиво, жди беды.. |
|
alcnwndrlnd Пользователь Сообщений: 44 |
#18 08.12.2015 12:08:28 Kuzmich, потревожу Вас еще раз. Не получается добавить просмотр следующего интересующего меня столбца, после прохождения первого
так? Уж больно здесь красиво, жди беды.. |
||
Михаил Лебедев Пользователь Сообщений: 2855 |
#19 08.12.2015 12:22:39 попробуйте так:
Изменено: Михаил Лебедев — 10.12.2015 11:57:00 Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||
Уж больно здесь красиво, жди беды.. |
|
Kuzmich Пользователь Сообщений: 7998 |
#21 08.12.2015 12:42:39
|
||
Kuzmich, пробовала, второй столбец не красит, но и ошибку не выдает Уж больно здесь красиво, жди беды.. |
|
Kuzmich Пользователь Сообщений: 7998 |
#23 08.12.2015 12:46:23
|
||
Файл выложите. И/или поменяйте строку в моем коде, как предложил «кузмич» (я в своем предыдущем — поменял) Изменено: Михаил Лебедев — 08.12.2015 13:04:02 Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
|
Kuzmich Пользователь Сообщений: 7998 |
#25 08.12.2015 13:04:42
Какой столбец? Когда подсвечивается вся строка. |
||
Kuzmich Пользователь Сообщений: 7998 |
Cells(i,2) — это будет второй столбец |
Михаил Лебедев Пользователь Сообщений: 2855 |
#27 08.12.2015 13:20:58
Изменено: Михаил Лебедев — 08.12.2015 13:21:20 Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||
Юрий М Модератор Сообщений: 60580 Контакты см. в профиле |
alcnwndrlnd и vdovin_sg, код следует оформлять тегом — ищите такую кнопку (см. скрин). |
alcnwndrlnd Пользователь Сообщений: 44 |
#29 08.12.2015 13:46:53
Да, по условию. Сейчас попробую с исправлениями Уж больно здесь красиво, жди беды.. |
||
alcnwndrlnd Пользователь Сообщений: 44 |
#30 08.12.2015 14:39:05 Михаил Лебедев, спасибо! Kuzmich, и снова, еще раз спасибо! во всем разобралась, все работает, как надо
Изменено: alcnwndrlnd — 08.12.2015 14:39:41 Уж больно здесь красиво, жди беды.. |
||
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
Sub FindAndSelect() Dim Rng As Range Dim n With Worksheets("general_report") Set Rng = .Range("A2:G100") For Each n In Rng Select Case n Case "WAIT FOR RELEASE" n.Interior.Color = RGB(146, 208, 80) Case "UAT" n.Interior.Color = RGB(255, 255, 0) Case "In Progress" n.Interior.Color = RGB(255, 255, 0) Case "ANALYTICS" n.Interior.Color = RGB(255, 255, 0) Case "IN QUEUE" n.Interior.Color = RGB(255, 204, 255) Case "ESTIMATION" n.Interior.Color = RGB(155, 194, 230) Case "Closed" n.Interior.Color = RGB(242, 242, 242) End Select Next n End With lLastRow = Sheets("general_report").Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To lLastRow If Cells(i, 6).Interior.Color = RGB(146, 208, 80) Then Range(Cells(i, 1), Cells(i, 7)).Interior.Color = RGB(146, 208, 80) If Cells(i, 6).Interior.Color = RGB(255, 255, 0) Then Range(Cells(i, 1), Cells(i, 7)).Interior.Color = RGB(255, 255, 0) If Cells(i, 6).Interior.Color = RGB(255, 204, 255) Then Range(Cells(i, 1), Cells(i, 7)).Interior.Color = RGB(255, 204, 255) If Cells(i, 6).Interior.Color = RGB(155, 194, 230) Then Range(Cells(i, 1), Cells(i, 7)).Interior.Color = RGB(155, 194, 230) If Cells(i, 6).Interior.Color = RGB(242, 242, 242) Then Range(Cells(i, 1), Cells(i, 7)).Interior.Color = RGB(242, 242, 242) Next i End Sub |