Условное форматирование в Excel VBA

В Excel мы все использовали условное форматирование для выделения дублирующихся значений. В основном условное форматирование используется для получения дублированных значений. Мы можем выделить дубликаты значений разными способами. Мы можем выделить дубликаты значений, диапазон конкретных значений, а также определить правило для завершения критериев форматирования. Ниже приведены функции переменных, доступные в разделе «Условное форматирование».

Но что, если мы сможем автоматизировать этот процесс выделения дубликатов или любых других значений в соответствии с нашим требованием. Критерии, которые мы можем определить с помощью условного форматирования в Excel, также могут быть выполнены в VBA. Для применения условного форматирования мы можем выбрать любую ячейку, диапазон которой доступен на листе Excel. Условное форматирование работает только тогда, когда определенные критерии соответствуют требованию. Иначе, это не покажет никакого изменения цвета. С помощью условного форматирования в VBA мы можем изменить цвет любой ячейки или содержимого ячейки, удалить цвет ячейки или удалить цвет. Помимо изменения цвета ячейки, мы можем изменить содержимое ячейки на текст, выделенный жирным шрифтом или курсивом . После этого мы можем отменить все изменения.

Как использовать условное форматирование в Excel VBA?

Ниже приведены различные примеры использования функции условного форматирования в Excel с использованием кода VBA.

Вы можете скачать этот шаблон Excel для условного форматирования VBA здесь - Шаблон Excel для условного форматирования VBA

Условное форматирование VBA - пример № 1

У нас есть данные о некоторых числах и тексте, как показано ниже в столбцах A и B. Теперь мы уже классифицировали цвет, который нам нужно присвоить числу и тексту, который находится в ячейке D2. Мы определили желтый цвет для номера 1 и алфавита A и зеленый цвет для номера 2 и алфавита B.

Хотя условное форматирование VBA может быть реализовано в модуле, но написание кода для условного форматирования на листе заставит код работать только на этом листе. Для этого вместо того, чтобы перейти к опции «Модуль», нажмите на вкладку «Вставка», чтобы вставить модуль.

Шаг 1: Теперь в первом раскрывающемся списке выберите « Рабочий лист», который по умолчанию будет общим, и в раскрывающемся списке «Выбор» он автоматически выберет параметр SelectionChange, как показано ниже.

Шаг 2: Как только мы это сделаем, он автоматически активирует частную подкатегорию, и целевая ячейка будет в диапазоне.

Код:

 Private Sub Worksheet_SelectionChange (цель ByVal в качестве диапазона) End Sub 

Шаг 3: Теперь напишите код, сначала определите переменную MyRange как Range . Или вы можете выбрать любое другое имя вместо MyRange согласно вашему выбору.

Код:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Sub End Sub 

Шаг 4: Используйте Set и выберите определенный диапазон, как показано ниже.

Код:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = End Sub 

Шаг 5: После этого выберите Рабочий лист, к которому мы хотим применить условное форматирование. Здесь наш лист Sheet1. Мы можем поставить последовательность также как 1 вместо записи Sheet1. А затем выберите диапазон тех ячеек, которые нам нужно отформатировать. Здесь наш диапазон от ячейки A1 до B8.

Код:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Set Range MyRange = Worksheets ("Sheet1"). Range ("A1: B8") End Sub 

Шаг 6: Теперь откройте цикл For Each-Next, как показано ниже. И начнем с выбора переменной MyRange, определенной в Cell .

Код:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") для каждой ячейки в MyRange Next End Sub 

Шаг 7: Теперь снова откройте цикл If-Else.

Код:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") для каждой ячейки в MyRange, если End If Next End Sub 

Это регион, в котором мы назначаем цвета всем числам и алфавитам, имеющимся в нашем ассортименте.

Шаг 8: Напишите код, если значение ячейки равно 1, тогда цвет интерьера: выбранная ячейка диапазона от A1 до B8 будет зеленого цвета. А для зеленого у нас есть цветовой код, назначенный ему как 6.

Код:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") для каждой ячейки в MyRange, если Cell.Value Like "1", то Cell.Interior.ColorIndex = 6 End If Next End Sub 

Шаг 9: Теперь для значения ячейки номер 2. Иначе, если значение ячейки любой ячейки из выбранного диапазона равно 2, то цвет внутренней части этой ячейки будет желтым. А для желтого у нас есть код цвета, назначенный ему как 4.

Код:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") для каждой ячейки в MyRange, если Cell.Value Like "1", то Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Как "2", то Cell.Interior.ColorIndex = 4 End If Next End Sub 

Для каждого цвета у нас есть разные цветовые коды, назначенные им, которые начинаются с 1 до 56. Принимая во внимание, что числовой код 1 назначается черному цвету, а номер 56 назначается темно-серому цвету. Между прочим, у нас есть другие цвета, которые мы можем найти в Microsoft Documents.

Шаг 10: Если что-либо из перечисленного

условие - ЛОЖЬ, тогда у нас будет другое условие, если если значение ячейки равно А, то внутренний цвет ячейки будет Желтым. И для желтого снова мы назначим код как 6.

Код:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") для каждой ячейки в MyRange, если Cell.Value Like "1", то Cell.Interior.ColorIndex = 6 ElseIf Cell.Value как «2», затем Cell.Interior.ColorIndex = 4 ElseIf Cell.Value, как «A», то Cell.Interior.ColorIndex = 6 End If Next End Sub 

Шаг 11: Сделайте то же самое для значения ячейки B, с цветовым кодом 4, как зеленый.

Код:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") для каждой ячейки в MyRange, если Cell.Value Like "1", то Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Как «2» Тогда Cell.Interior.ColorIndex = 4 ElseIf Cell.Value Как «A» Тогда Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Как «B» Тогда Cell.Interior.ColorIndex = 4 End If Next End Sub 

Шаг 12: Если какое-либо из условий не TRUE, то для Else мы предпочтем выбрать цветовой код как None .

Код:

 Private Sub Worksheet_SelectionChange (ByVal Target As Range) Dim MyRange As Range Set MyRange = Worksheets ("Sheet1"). Range ("A1: B8") для каждой ячейки в MyRange, если Cell.Value Like "1", то Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Как «2» Тогда Cell.Interior.ColorIndex = 4 ElseIf Cell.Value Как «A» Тогда Cell.Interior.ColorIndex = 6 ElseIf Cell.Value Как «B» Тогда Cell.Interior.ColorIndex = 4 Else Cell.Ineterios.ColorIndex = xlNone End If Next End Sub 

Шаг 13: Поскольку код большой, для компиляции каждого шага кода нажмите функциональную клавишу F8. Если ошибки не найдены, нажмите кнопку воспроизведения, чтобы запустить весь код за один раз. Мы увидим, что согласно правилу условного форматирования, определенному в коде VBA, цвет ячеек был изменен на выбранные цветовые коды, как показано ниже.

Шаг 14: Это форматирование теперь исправлено. Если мы хотим увидеть изменения в цвете, для теста давайте изменим значение любой ячейки, считая А1 с 1 на 2. Мы увидим, что цвет ячейки А1 меняется на Зеленый.

Это связано с тем, что мы объявили, что в диапазоне от A1 до B8 любая ячейка, содержащая числа 1 и 2 и алфавиты A и B, будет отформатирована в желтый и зеленый цвета, как показано в ячейках D2-E3.

Плюсы и минусы

  • Это дает мгновенный вывод, если у нас есть огромные данные. Принимая во внимание, что если мы применим то же самое из пункта меню Excel, потребуется время, чтобы очистить форматирование для большого набора данных.
  • Мы можем выполнять все типы функций, которые доступны в Excel для условного форматирования в VBA.
  • Не рекомендуется применять условное форматирование VBA для небольшого набора данных.

То, что нужно запомнить

  • Есть много других функций, кроме выделения дубликатов и одинаковых ячеек значений. Мы можем изменить формат ячейки любым способом, таким как полужирный шрифт, текст курсивом, изменение цвета шрифта, изменение цвета фона, выделение значений в некотором определенном диапазоне.
  • После применения условного форматирования мы можем изменить правило, фактически мы можем также удалить условия форматирования. Так что наши данные вернутся к норме.
  • Мы можем применить более одного условия в одном макросе.

Рекомендуемые статьи

Это руководство по условному форматированию VBA. Здесь мы обсудим, как использовать функцию условного форматирования Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

  1. Функция копирования и вставки в VBA
  2. Функция подстроки Excel
  3. Индекс VBA вне диапазона
  4. Excel ISNUMBER Formula
  5. Условное форматирование для дат в Excel

Категория: