Vba excel удалить условное форматирование

 

IgorBoot

Пользователь

Сообщений: 134
Регистрация: 10.07.2017

Добрый день Уважаемые Эксперты.

Прошу у Вас уточнения, возможно ли программным способом отключить Условное Форматирование на листе?
По крайней мере в Excel 2010 есть возможность отключить УФ через удаление правил. Я хотел записать  код через Макрорекодер но на выходе получился пустой макрос.
Подскажите есть ли вообще способ отключения УФ на листе через VBA?

Прошу прощения у Модераторов и Старожилов форума за то что нет примера, насколько я понимаю примером в данном случае будет служить пустой файл.

Прошу помочь разобраться.

Благодарю Вас

 

отключить — не возможно
можно удалить
но писать их потом в случае необходимости будете снова рукам каждое, отдельно

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

IgorBoot

Пользователь

Сообщений: 134
Регистрация: 10.07.2017

Уважаемый

Ігор Гончаренко

, Благодарю Вас за ответ.

Я прошу прощения, я некорректно сформулировал, как удалить?

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

IgorBoot, здравствуйте!
Гляньте

тут

и

тут

(со скрина)

Прикрепленные файлы

  • УФ.png (29.64 КБ)

Изменено: Jack Famous11.09.2019 16:04:47

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#5

11.09.2019 16:01:13

Код
Activesheet.Cells.Formatconditions.Delete
 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#6

11.09.2019 16:03:38

используйте этот мощный

Код
Sub Макрос()  
  Cells.FormatConditions.Delete
End Sub

главное — не выполнить его, когда активен лист, на котором нужно оставить условное форматирование

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

IgorBoot

Пользователь

Сообщений: 134
Регистрация: 10.07.2017

Огромное спасибо Всем за Ответы.

Уважаемый

Ігор Гончаренко

, Вам отдельное Спасибо за пояснение.

Благодарю Вас всех

Изменено: IgorBoot11.09.2019 16:08:08

 

Вы, несколько преувеличиваете ценность этого макроса и моих подсказок. используйте:
Главная
Условное форматирование
Удалить правила
Удалить правила со всего листа
и получите ровно то же самое, что написано в макросе. Только не нужно помнить где лежит макрос,,а можно воспользоваться меню Excel, которое постоянно под рукой (прямо в Excele)

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#9

11.09.2019 22:37:52

По названию темы  — отключить или удалить?

Условное форматирование — очень полезный инструмент в Excel, он может легко помочь вам отформатировать и закрасить ячейки в соответствии с определенными условными критериями, но иногда вам может потребоваться удалить или очистить условное форматирование в Excel. Как удалить условное форматирование в Excel?

Удалите условное форматирование с помощью функции очистки правил
Удалить условное форматирование с помощью кода VBA
Легко удаляйте условное форматирование и затенение фона с помощью Kutools for Excel


Удалите условное форматирование с помощью функции очистки правил

Функция «Очистить правила» может помочь вам быстро и легко удалить условное форматирование в выбранном диапазоне и на всех листах.

Чтобы удалить условное форматирование выбранного диапазона, сделайте следующее:

1. Выберите диапазон, в котором вы хотите удалить условное форматирование.

2. Нажмите Главная > Условное форматирование > Очистить правила > Очистить правила из выбранных ячеек. Смотрите скриншот:

документ-удалить-условное-форматирование1

3. И выбранное условное форматирование было удалено. Смотрите скриншоты:

Чтобы удалить условное форматирование всего рабочего листа, сделайте следующее:

Нажмите Главная > Условное форматирование > Очистить правила > Очистить правила со всего листа, и все условное форматирование рабочего листа будет удалено.


Удалить условное форматирование с помощью кода VBA

Следующий код VBA также может помочь вам удалить условное форматирование.

1. Нажмите Застройщик >Визуальный Бейсик, Новый Microsoft Visual Basic для приложений появится окно, щелкните Вставить > Модули, и введите в модуль следующий код:

VBA: удалить условное форматирование

Sub DeleteConditionalFormats()
'Update 20130912
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
WorkRng.FormatConditions.Delete
End Sub

2. Затем нажмите док-умножить-расчет-3 или нажмите F5 нажмите клавишу, чтобы запустить код, и появится окно с напоминанием о выборе диапазона, который вы хотите использовать. Смотрите скриншот:

документ-удалить-условное-форматирование4

3. Затем нажмите OK кнопку, и все условное форматирование в выбранном диапазоне было удалено.


Легко удаляйте условное форматирование и затенение фона с помощью Kutools for Excel

Наблюдения и советы этой статьи мы подготовили на основании опыта команды Kutools for ExcelАвтора Альтернативное затенение строки / столбца Утилита может помочь вам одновременно удалить как условное форматирование, так и затенение фона.

1. Выберите диапазон с условным форматированием или затенением фона, который вы хотите удалить, затем нажмите Кутулс > Формат > Альтернативное затенение строки / столбца. Смотрите скриншот:

2. В Альтернативное затенение строки / столбца диалоговое окно, просто выберите Удалить существующее затенение альтернативной строки вариант в Метод затенения раздел, а затем щелкните OK кнопка. Смотрите скриншоты:

Затем сразу же удаляется все форматирование условий и цвета ручной заливки.

документ удалить форматирование1

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Легко удаляйте условное форматирование и затенение фона с помощью Kutools for Excel


Связанная статья:

  • Быстро очистить или удалить все форматирование ячеек

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

My Excel spreadsheet consists of different conditional formatting:


VBA-Code:

Sub Apply_Conditional_Formatting()
With Sheet1.Range("=$A$1:$C$7")
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$A1=$F$1"
    .FormatConditions(.FormatConditions.Count).Interior.Color = RGB(255, 255, 0)
End With
End Sub

Conditioal Formatting Rules Manager:
(Sorry for only having it available in German)

enter image description here


Now I am looking for a VBA that identifies the second conditional formatting (the one that I apply with the VBA code above) and deletes it. The other conditional formatting should remain.


With the below VBA all conditional formatting rules get deleted:

Sub Delete_Conditional_Formatting()
sheet1.Range("$A$1:$C$7").FormatConditions.Delete
End Sub

What do I need to change in the code to only delete the second conditional formatting?

asked Oct 9, 2020 at 14:01

Michi's user avatar

0

You can easily index into the FormatConditions collection and delete a specific one:

sheet1.Range("$A$1:$C$7").FormatConditions(2).Delete

Or if you want the last condition:

With Sheet1.Range("$A$1:$C$7")
    .FormatConditions(.FormatConditions.Count).Delete
End With

answered Oct 9, 2020 at 14:07

BigBen's user avatar

BigBenBigBen

43.9k6 gold badges27 silver badges40 bronze badges

2

Identify Format Conditions (Conditional Formatting)

  • These two examples should shed a light on how to identify format conditions by their properties.

Links (Microsoft)

  • FormatCondition.Object
  • FormatConditions.Object

The Code

' Identified by One Property
' The following will delete all format conditions with yellow interior color,
' unless 'Exit For' is used.
Sub deleteYellow()
    Dim fc As FormatCondition
    For Each fc In Sheet1.Cells.FormatConditions
        If fc.Interior.Color = RGB(255, 255, 0) Then
            fc.Delete
            ' If you want to delete only the first or if there is only one
            ' format condition with yellow interior color then add:
            'Exit For
        End If
    Next fc
End Sub

' Identified by Two Properties
' The following will delete all format conditions with yellow interior color
' and with the AppliesTo address equal to "$A$1:$C$7",
' unless 'Exit For' is used.
Sub deleteYellowA1C7()
    Dim fc As FormatCondition
    For Each fc In Sheet1.Cells.FormatConditions
        If fc.Interior.Color = RGB(255, 255, 0) And _
           fc.AppliesTo.Address = "$A$1:$C$7" Then
            fc.Delete
            ' If you want to delete only the first or if there is only one,
            ' then add:
            'Exit For
        End If
    Next fc
End Sub

answered Oct 10, 2020 at 19:22

VBasic2008's user avatar

VBasic2008VBasic2008

39.8k5 gold badges17 silver badges27 bronze badges

Hi Robert,
The following line of code tells the macro how many rows to consider.

For lrowno = 2 To 10

This is telling it to loop for row numbers 2,3,4,5,6,7,8,9 and 10.

It is possible to have it happening automatically in a similar way to conditional formatting.

conditional-formatting-automatic-togglying.png

One solution is to use a Worksheet Event:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim oRange As Excel.Range
Dim oColorScale As Excel.ColorScale

    If ((Target.Column = 8) And (Target.Cells.Count = 1)) Then
        If (Target.Row <= 2) Or (Target.Row <= 10) Then
            Set oRange = Range("A" & Target.Row & ":G" & Target.Row)
            If (Target.Value = "Rework") Then
                oRange.ClearFormats
            Else
                oRange.ClearFormats
                Set oColorScale = oRange.FormatConditions.AddColorScale(2)
                oColorScale.ColorScaleCriteria(1).FormatColor.Color = RGB(204, 223, 244)
                oColorScale.ColorScaleCriteria(2).FormatColor.Color = RGB(128, 176, 228)
            End If
        End If
    End If
End Sub 

If you would like to find out more please contact me via the website:

Hope this helps

Russell

https://bettersolutions.com/vba.htm

замечания

Вы не можете определить более трех условных форматов для диапазона. Используйте метод Modify для изменения существующего условного формата или используйте метод Delete для удаления существующего формата перед добавлением нового.

FormatConditions.Add

Синтаксис:

FormatConditions.Add(Type, Operator, Formula1, Formula2)

Параметры:

название Обязательный / необязательный Тип данных
Тип необходимые XlFormatConditionType
оператор Необязательный Вариант
Формула 1 Необязательный Вариант
Formula2 Необязательный Вариант

XlFormatConditionType enumaration:

название Описание
xlAboveAverageCondition Выше среднего условия
xlBlanksCondition Состояние бланков
xlCellValue Значение ячейки
xlColorScale Цветовая гамма
xlDatabar Databar
xlErrorsCondition Условие ошибок
xlExpression выражение
XlIconSet Набор значков
xlNoBlanksCondition Отсутствие состояния пробелов
xlNoErrorsCondition Нет ошибок.
xlTextString Текстовая строка
xlTimePeriod Временной период
xlTop10 Топ-10 значений
xlUniqueValues Уникальные значения

Форматирование по значению ячейки:

With Range("A1").FormatConditions.Add(xlCellValue, xlGreater, "=100")
    With .Font
        .Bold = True
        .ColorIndex = 3
     End With
End With

Операторы:

название
xlBetween
xlEqual
xlGreater
xlGreaterEqual
xlLess
xlLessEqual
xlNotBetween
xlNotEqual

Если Type является выражением xlExpression, аргумент Operator игнорируется.

Форматирование по тексту содержит:

With Range("a1:a10").FormatConditions.Add(xlTextString, TextOperator:=xlContains, String:="egg")
    With .Font
        .Bold = True
        .ColorIndex = 3
    End With
End With

Операторы:

название Описание
xlBeginsWith Начинается с указанного значения.
xlContains Содержит указанное значение.
xlDoesNotContain Не содержит указанного значения.
xlEndsWith Завершить указанное значение

Форматирование по времени

With Range("a1:a10").FormatConditions.Add(xlTimePeriod, DateOperator:=xlToday)
    With .Font
        .Bold = True
        .ColorIndex = 3
    End With
End With

Операторы:

название
xlYesterday
xlTomorrow
xlLast7Days
xlLastWeek
xlThisWeek
xlNextWeek
xlLastMonth
xlThisMonth
xlNextMonth

Удалить условный формат

Удалите все условные форматы в диапазоне:

Range("A1:A10").FormatConditions.Delete

Удалите все условные форматы на листе:

Cells.FormatConditions.Delete

FormatConditions.AddUniqueValues

Выделение повторяющихся значений

With Range("E1:E100").FormatConditions.AddUniqueValues
   .DupeUnique = xlDuplicate
   With .Font
       .Bold = True
       .ColorIndex = 3
   End With
End With

Выделение уникальных значений

With Range("E1:E100").FormatConditions.AddUniqueValues
   With .Font
       .Bold = True
       .ColorIndex = 3
   End With
End With

FormatConditions.AddTop10

Выделение верхних 5 значений

With Range("E1:E100").FormatConditions.AddTop10
    .TopBottom = xlTop10Top
    .Rank = 5
    .Percent = False
    With .Font
        .Bold = True
        .ColorIndex = 3
    End With
End With

FormatConditions.AddAboveAverage

With Range("E1:E100").FormatConditions.AddAboveAverage
    .AboveBelow = xlAboveAverage
    With .Font
        .Bold = True
        .ColorIndex = 3
    End With
End With

Операторы:

название Описание
XlAboveAverage Выше среднего
XlAboveStdDev Выше стандартного отклонения
XlBelowAverage Ниже среднего
XlBelowStdDev Ниже стандартного отклонения
XlEqualAboveAverage Равно выше среднего
XlEqualBelowAverage Равновесие ниже среднего

FormatConditions.AddIconSetCondition

введите описание изображения здесь

Range("a1:a10").FormatConditions.AddIconSetCondition
With Selection.FormatConditions(1)
    .ReverseOrder = False
    .ShowIconOnly = False
    .IconSet = ActiveWorkbook.IconSets(xl3Arrows)
End With

With Selection.FormatConditions(1).IconCriteria(2)
    .Type = xlConditionValuePercent
    .Value = 33
    .Operator = 7
End With

With Selection.FormatConditions(1).IconCriteria(3)
    .Type = xlConditionValuePercent
    .Value = 67
    .Operator = 7
End With

IconSet:

название
xl3Arrows
xl3ArrowsGray
xl3Flags
xl3Signs
xl3Stars
xl3Symbols
xl3Symbols2
xl3TrafficLights1
xl3TrafficLights2
xl3Triangles
xl4Arrows
xl4ArrowsGray
xl4CRV
xl4RedToBlack
xl4TrafficLights
xl5Arrows
xl5ArrowsGray
xl5Boxes
xl5CRV
xl5Quarters

введите описание изображения здесь

Тип:

название
xlConditionValuePercent
xlConditionValueNumber
xlConditionValuePercentile
xlConditionValueFormula

Оператор:

название Значение
xlGreater 5
xlGreaterEqual 7

Значение:

Возвращает или устанавливает пороговое значение для значка в условном формате.

Ответы с готовыми решениями:

Заморозка условного форматирования
Доброго времени суток!
Подскажите пожалуйста.
Есть: таблица, в этой таблице работают условные…

Копирование условного форматирования
Добрый день!

подскажите, пожалуйста, решение такой задачи:
нужно с помощью условного…

Глюки условного форматирования
Гуру Excel, подскажите как быть.
Столкнулся с проблемой, некоторые документы стали нереально…

Выделить ячейки условного форматирования
Здравствуйте, подскажите, пожалуйста… У меня создано правило условного форматирования…

1

Содержание

  • Условное форматирование Excel
  • Условное форматирование в VBA
  • Практическое использование условного форматирования в VBA
  • Простой пример создания условного формата для диапазона

Условное форматирование Excel позволяет определять правила, определяющие форматирование ячеек.

Например, вы можете создать правило, выделяющее ячейки, соответствующие определенным критериям. Примеры включают:

  • Числа, попадающие в определенный диапазон (например, меньше 0).
  • 10 первых пунктов списка.
  • Создание «тепловой карты».
  • «Формульные» правила практически для любого условного форматирования.

В Excel условное форматирование можно найти на ленте в разделе Главная> Стили (ALT> H> L).

Чтобы создать собственное правило, нажмите «Новое правило», и откроется новое окно:

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

Доступ ко всем этим функциям условного форматирования можно получить с помощью VBA.

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

Правила условного форматирования также сохраняются при сохранении рабочего листа.

Правила условного форматирования применяются конкретно к определенному листу и определенному диапазону ячеек. Если они нужны где-то еще в книге, то они также должны быть настроены на этом листе.

Практическое использование условного форматирования в VBA

У вас может быть большой кусок необработанных данных, импортированных на ваш рабочий лист из файла CSV (значения, разделенные запятыми), или из таблицы или запроса базы данных. Это может перетекать в информационную панель или отчет с изменением чисел, импортированных из одного периода в другой.

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

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

Кроме того, в необработанных импортированных данных вы можете выделить, где числа смехотворно велики или смехотворно малы. Импортируемый диапазон данных обычно имеет разный размер для каждого периода, поэтому вы можете использовать VBA для оценки размера нового диапазона данных и вставки условного форматирования только для этого диапазона.

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

Однако список имен не всегда будет статическим по размеру, и вы можете использовать код VBA для обновления шкалы градуированных цветов в соответствии с изменениями размера диапазона.

Простой пример создания условного формата для диапазона

В этом примере настраивается условное форматирование для диапазона ячеек (A1: A10) на листе. Если число в диапазоне от 100 до 150, то цвет фона ячейки будет красным, в противном случае он не будет иметь цвета.

1234567891011121314 Sub ConditionalFormattingExample ()‘Определить диапазонDim MyRange As RangeУстановите MyRange = Range («A1: A10»)‘Удалить существующее условное форматирование из диапазонаMyRange.FormatConditions.Delete‘Применить условное форматированиеMyRange.FormatConditions.Add Тип: = xlCellValue, оператор: = xlBetween, _Formula1: = «= 100», Formula2: = «= 150″MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)Конец подписки

Обратите внимание, что сначала мы определяем диапазон MyRange применить условное форматирование.

Затем мы удаляем любое существующее условное форматирование для диапазона. Это хорошая идея, чтобы предотвратить добавление одного и того же правила при каждом запуске кода (конечно, это не подходит для всех обстоятельств).

Цвета представлены числовыми значениями. Для этого рекомендуется использовать обозначение RGB (красный, зеленый, синий). Для этого можно использовать стандартные цветовые константы, например. vbRed, vbBlue, но вы можете выбрать один из восьми цветов.

Доступно более 16,7 млн ​​цветов, и с помощью RGB можно получить доступ ко всем. Это намного проще, чем пытаться вспомнить, какое число соответствует какому цвету. Каждый из трех номеров цветов RGB составляет от 0 до 255.

Обратите внимание, что параметр «xlBetween» является включительным, поэтому значения ячеек 100 или 150 будут удовлетворять условию.

Многовариантное форматирование

Вы можете настроить несколько условных правил в пределах своего диапазона данных, чтобы все значения в диапазоне охватывались разными условиями:

12345678910111213141516171819 Sub MultipleConditionalFormattingExample ()Dim MyRange As Range’Создать объект диапазонаУстановите MyRange = Range («A1: A10»)’Удалить предыдущие условные форматыMyRange.FormatConditions.Delete’Добавить первое правилоMyRange.FormatConditions.Add Тип: = xlCellValue, оператор: = xlBetween, _Formula1: = «= 100», Formula2: = «= 150″MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)’Добавить второе правилоMyRange.FormatConditions.Add Тип: = xlCellValue, оператор: = xlLess, _Formula1: = «= 100″MyRange.FormatConditions (2) .Interior.Color = vbBlue’Добавить третье правилоMyRange.FormatConditions.Add Тип: = xlCellValue, оператор: = xlGreater, _Formula1: = «= 150″MyRange.FormatConditions (3) .Interior.Color = vbYellowКонец подписки

В этом примере устанавливается первое правило, как и раньше, с красным цветом ячейки, если значение ячейки находится в диапазоне от 100 до 150.

Затем добавляются еще два правила. Если значение ячейки меньше 100, то цвет ячейки синий, а если больше 150, то цвет ячейки желтый.

В этом примере вам нужно убедиться, что охвачены все возможности чисел и что правила не пересекаются.

Если в этом диапазоне находятся пустые ячейки, они будут отображаться синим цветом, потому что Excel по-прежнему считает их имеющими значение меньше 100.

Чтобы решить эту проблему, добавьте еще одно условие в качестве выражения. Это необходимо добавить в качестве первого правила условия в коде. При наличии нескольких правил очень важно установить правильный порядок выполнения, иначе результаты могут быть непредсказуемыми.

1234567891011121314151617181920212223 Sub MultipleConditionalFormattingExample ()Dim MyRange As Range’Создать объект диапазонаУстановите MyRange = Range («A1: A10»)’Удалить предыдущие условные форматыMyRange.FormatConditions.Delete’Добавить первое правилоMyRange.FormatConditions.Add Тип: = xlExpression, Formula1: = _»= LEN (TRIM (A1)) = 0″MyRange.FormatConditions (1) .Interior.Pattern = xlNone’Добавить второе правилоMyRange.FormatConditions.Add Тип: = xlCellValue, оператор: = xlBetween, _Formula1: = «= 100», Formula2: = «= 150″MyRange.FormatConditions (2) .Interior.Color = RGB (255, 0, 0)’Добавить третье правилоMyRange.FormatConditions.Add Тип: = xlCellValue, оператор: = xlLess, _Formula1: = «= 100″MyRange.FormatConditions (3) .Interior.Color = vbBlue’Добавить четвертое правилоMyRange.FormatConditions.Add Тип: = xlCellValue, оператор: = xlGreater, _Formula1: = «= 150″MyRange.FormatConditions (4) .Interior.Color = RGB (0, 255, 0)Конец подписки

При этом используется тип xlExpression, а затем используется стандартная формула Excel, чтобы определить, является ли ячейка пустой, а не числовым значением.

Объект FormatConditions является частью объекта Range. Он действует так же, как коллекция с индексом, начинающимся с 1. Вы можете перебирать этот объект, используя цикл For… Next или For… Each.

Удаление правила

Иногда вам может потребоваться удалить отдельное правило из набора из нескольких правил, если оно не соответствует требованиям к данным.

12345678910111213 Sub DeleteConditionalFormattingExample ()Dim MyRange As Range’Создать объект диапазонаУстановите MyRange = Range («A1: A10»)’Удалить предыдущие условные форматыMyRange.FormatConditions.Delete’Добавить первое правилоMyRange.FormatConditions.Add Тип: = xlCellValue, оператор: = xlBetween, _Formula1: = «= 100», Formula2: = «= 150″MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)’Удалить правилоMyRange.FormatConditions (1) .DeleteКонец подписки

Этот код создает новое правило для диапазона A1: A10, а затем удаляет его. Вы должны использовать правильный номер индекса для удаления, поэтому проверьте «Управление правилами» в интерфейсе Excel (это покажет правила в порядке выполнения), чтобы убедиться, что вы получили правильный номер индекса. Обратите внимание, что в Excel нет возможности отмены, если вы удаляете правило условного форматирования в VBA, в отличие от того, если вы делаете это через интерфейс Excel.

Изменение правила

Поскольку правила представляют собой набор объектов на основе указанного диапазона, вы можете легко вносить изменения в определенные правила с помощью VBA. Фактические свойства после добавления правила доступны только для чтения, но вы можете использовать метод Modify для их изменения. Доступны для чтения / записи такие свойства, как цвета.

123456789101112131415 Sub ChangeConditionalFormattingExample ()Dim MyRange As Range’Создать объект диапазонаУстановите MyRange = Range («A1: A10»)’Удалить предыдущие условные форматыMyRange.FormatConditions.Delete’Добавить первое правилоMyRange.FormatConditions.Add Тип: = xlCellValue, оператор: = xlBetween, _Formula1: = «= 100», Formula2: = «= 150″MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)’Изменить правилоMyRange.FormatConditions (1) .Modify xlCellValue, xlLess, «10»‘Изменить цвет правилаMyRange.FormatConditions (1) .Interior.Color = vbGreenКонец подписки

Этот код создает объект диапазона (A1: A10) и добавляет правило для чисел от 100 до 150. Если условие истинно, цвет ячейки меняется на красный.

Затем код изменяет правило на числа меньше 10. Если условие истинно, цвет ячейки теперь меняется на зеленый.

Использование градуированной цветовой схемы

Условное форматирование Excel позволяет использовать градуированные цвета для диапазона чисел, идущих в возрастающем или убывающем порядке.

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

1234567891011121314151617181920212223242526272829 Sub GraduatedColors ()Dim MyRange As Range’Создать объект диапазонаУстановите MyRange = Range («A1: A10»)’Удалить предыдущие условные форматыMyRange.FormatConditions.Delete’Определить тип шкалыMyRange.FormatConditions.AddColorScale ColorScaleType: = 3’Выберите цвет для наименьшего значения в диапазонеMyRange.FormatConditions (1) .ColorScaleCriteria (1) .Type = _xlConditionValueLowestValueС MyRange.FormatConditions (1) .ColorScaleCriteria (1) .FormatColor.Color = 7039480.Конец с’Выберите цвет для средних значений в диапазонеMyRange.FormatConditions (1) .ColorScaleCriteria (2) .Type = _xlConditionValuePercentileMyRange.FormatConditions (1) .ColorScaleCriteria (2) .Value = 50’Выберите цвет для средней точки диапазонаС MyRange.FormatConditions (1) .ColorScaleCriteria (2) .FormatColor.Color = 8711167.Конец с’Выберите цвет для максимального значения в диапазонеMyRange.FormatConditions (1) .ColorScaleCriteria (3) .Type = _xlConditionValueHighestValueС MyRange.FormatConditions (1) .ColorScaleCriteria (3) .FormatColor.Color = 8109667.Конец сКонец подписки

Когда этот код запускается, он будет градуировать цвета ячеек в соответствии с возрастающими значениями в диапазоне A1: A10.

Это очень впечатляющий способ отображения данных, который наверняка привлечет внимание пользователей.

Условное форматирование значений ошибок

Когда у вас огромный объем данных, вы можете легко пропустить значение ошибки в различных таблицах. Если это будет представлено пользователю без разрешения, это может привести к большим проблемам, и пользователь потеряет уверенность в цифрах. Это использует тип правила xlExpression и функцию Excel IsError для оценки ячейки.

Вы можете создать код, чтобы все ячейки с ошибками имели красный цвет:

1234567891011 Sub ErrorConditionalFormattingExample ()Dim MyRange As Range’Создать объект диапазонаУстановите MyRange = Range («A1: A10»)’Удалить предыдущие условные форматыMyRange.FormatConditions.Delete’Добавить правило ошибкиMyRange.FormatConditions.Add Тип: = xlExpression, Formula1: = «= IsError (A1) = true»‘Установить красный цвет салона.MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)Конец подписки

Условное форматирование дат в прошлом

У вас могут быть импортированные данные там, где вы хотите выделить даты, которые были в прошлом. Примером этого может быть отчет по дебиторам, в котором вы хотите выделить любые старые даты в счетах-фактурах старше 30 дней.

Этот код использует тип правила xlExpression и функцию Excel для оценки дат.

1234567891011 Подложка DateInPastConditionalFormattingExample ()Dim MyRange As Range’Создать объект диапазона на основе столбца датУстановите MyRange = Range («A1: A10»)’Удалить предыдущие условные форматыMyRange.FormatConditions.Delete’Добавить правило ошибки для прошлых датMyRange.FormatConditions.Add Тип: = xlExpression, Formula1: = «= Now () — A1> 30″‘Установить красный цвет салона.MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)Конец подписки

Этот код принимает диапазон дат в диапазоне A1: A10 и устанавливает красный цвет ячейки для любой даты, прошедшей более 30 дней.

В формуле, используемой в условии, Now () указывает текущую дату и время. Это будет продолжать пересчитывать каждый раз, когда рабочий лист пересчитывается, поэтому форматирование будет меняться от одного дня к другому.

Использование панелей данных в условном форматировании VBA

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

123456 Sub DataBarFormattingExample ()Dim MyRange As RangeУстановите MyRange = Range («A1: A10»)MyRange.FormatConditions.DeleteMyRange.FormatConditions.AddDatabarКонец подписки

Ваши данные на листе будут выглядеть так:

Использование значков в условном форматировании VBA

Вы можете использовать условное форматирование, чтобы поместить значки рядом с числами на листе. Значки могут быть в виде стрелок, кружков или различных других форм. В этом примере код добавляет значки стрелок к числам в зависимости от их процентных значений:

12345678910111213141516171819202122232425 Sub IconSetsExample ()Dim MyRange As Range’Создать объект диапазонаУстановите MyRange = Range («A1: A10»)’Удалить предыдущие условные форматыMyRange.FormatConditions.Delete’Добавить набор иконок в объект FormatConditionsMyRange.FormatConditions.AddIconSetCondition’Установите набор иконок в стрелки — условие 1С MyRange.FormatConditions (1).IconSet = ActiveWorkbook.IconSets (xl3Arrows)Конец с’установить критерии значка для требуемого процентного значения — условие 2С MyRange.FormatConditions (1) .IconCriteria (2).Type = xlConditionValuePercent.Значение = 33.Operator = xlGreaterEqualКонец с’установить критерии значка для требуемого процентного значения — условие 3С MyRange.FormatConditions (1) .IconCriteria (3).Type = xlConditionValuePercent.Значение = 67.Operator = xlGreaterEqualКонец сКонец подписки

Это даст мгновенное представление, показывающее, высокое или низкое число. После запуска этого кода ваш рабочий лист будет выглядеть так:

Использование условного форматирования для выделения пятерки лучших

Вы можете использовать код VBA, чтобы выделить 5 первых чисел в диапазоне данных. Вы используете параметр под названием «AddTop10», но вы можете настроить номер ранга в коде на 5. Пользователь может захотеть увидеть самые высокие числа в диапазоне без предварительной сортировки данных.

1234567891011121314151617181920212223 Sub Top5Example ()Dim MyRange As Range’Создать объект диапазонаУстановите MyRange = Range («A1: A10»)’Удалить предыдущие условные форматыMyRange.FormatConditions.Delete’Добавить условие Top10MyRange.FormatConditions.AddTop10С MyRange.FormatConditions (1)’Установить параметр сверху вниз.TopBottom = xlTop10Top’Установить только топ 5.Ранг = 5Конец сС MyRange.FormatConditions (1) .Font’Установить цвет шрифта.Color = -16383844.Конец сС MyRange.FormatConditions (1) .Interior’Установить цвет фона ячейки.Color = 13551615Конец сКонец подписки

Данные на вашем листе после запуска кода будут выглядеть так:

Обратите внимание, что значение 145 появляется дважды, поэтому выделяются шесть ячеек.

Значение параметров StopIfTrue и SetFirstPriority

StopIfTrue имеет значение, если диапазон ячеек имеет несколько правил условного форматирования. Одиночная ячейка в пределах диапазона может удовлетворять первому правилу, но также может удовлетворять последующим правилам. Как разработчик, вы можете захотеть, чтобы форматирование отображалось только для первого правила. Другие критерии правила могут перекрываться и вносить непреднамеренные изменения, если им разрешено продолжить работу по списку правил.

По умолчанию для этого параметра установлено значение True, но вы можете изменить его, если хотите, чтобы учитывались все остальные правила для этой ячейки:

1 MyRange. FormatConditions (1) .StopIfTrue = False

Параметр SetFirstPriority указывает, будет ли это правило условия оцениваться первым, если для этой ячейки существует несколько правил.

1 MyRange. FormatConditions (1) .SetFirstPriority

Это перемещает позицию этого правила в позицию 1 в наборе условий форматирования, а любые другие правила будут перемещены вниз с измененными номерами индексов. Будьте осторожны, если вы вносите какие-либо изменения в правила в коде, используя порядковые номера. Вам необходимо убедиться, что вы изменяете или удаляете правильное правило.

Вы можете изменить приоритет правила:

1 MyRange. FormatConditions (1) .Priority = 3

Это изменит относительное положение любых других правил в списке условного формата.

Использование условного форматирования для ссылки на другие значения ячеек

Это то, чего нельзя сделать с помощью условного форматирования Excel. Однако для этого вы можете создать свой собственный код VBA.

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

Следующий код выполнит поиск по вашему списку чисел, отыщет в соседней ячейке форматирование текста, а затем отформатирует число, как требуется:

123456789101112131415161718192021 Sub ReferToAnotherCellForConditionalFormatting ()’Создайте переменные для хранения количества строк для табличных данныхDim Row as long, N as long’Захватить количество строк в диапазоне табличных данныхRRow = ActiveSheet.UsedRange.Rows.Count’Перебрать все строки в диапазоне табличных данныхДля N = 1 в ряд’Используйте оператор Select Case для оценки форматирования на основе столбца 2Выберите Case ActiveSheet.Cells (N, 2) .Value.’Преврати цвет салона в синийКорпус «Синий»ActiveSheet.Cells (N, 1) .Interior.Color = vbBlue’Преврати цвет салона в красныйКейс «Красный»ActiveSheet.Cells (N, 1) .Interior.Color = vbRed’Преврати цвет салона в зеленыйКорпус «Зеленый»ActiveSheet.Cells (N, 1) .Interior.Color = vbGreenКонец ВыбратьСледующий NКонец подписки

После того, как этот код был запущен, ваш рабочий лист теперь будет выглядеть так:

Ячейки, используемые для форматирования, могут находиться в любом месте рабочего листа или даже на другом листе в книге. Вы можете использовать любую форму текста, чтобы создать условие для форматирования, и вы ограничены только вашим воображением в использовании этого кода.

Операторы, которые можно использовать в операторах условного форматирования

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

Существует ряд этих операторов, которые можно использовать в зависимости от того, как вы хотите указать критерии правила.

Имя Ценить Описание
xlBetween 1 Между. Может использоваться только при наличии двух формул.
xlEqual 3 Равный.
xlGreater 5 Больше чем.
xlGreaterEqual 7 Больше или равно.
xl Меньше 6 Меньше, чем.
xlLessEqual 8 Меньше или равно.
xlNotBetween 2 Не между. Может использоваться только при наличии двух формул.
xlNotEqual 4 Не равный.

Like this post? Please share to your friends:
  • Vba excel удалить текст до символа
  • Vba excel удалить строку содержащую
  • Vba excel удалить строку по условию
  • Vba excel удалить строку в listbox
  • Vba excel удалить содержимое ячеек