Синтаксис условного форматирования VBA для xlUniqueValues

Я пытаюсь выделить дубликаты, используя условное форматирование в VBA.

Если вы посмотрите на Условное форматирование с использованием VBA, одним из XlFormatConditionType (Type) для FormatConditions.Add является xlUniqueValues.

Синтаксис: FormatConditions.Add (Тип, Оператор, Формула1, Формула2)

Перечисленные операторы: xlBetween; xlEqual; xlGreater; xlGreaterEqual; xlLess; xlLessEqual; xlNotBetween; xlNotEqual.

Ничего из этого не применимо к xlUniqueValues. Я перепробовал их все, включая xlDuplicate и xlUnique, которые не вызывают ошибок. Типы xlTextString использует TextOperator, а xlTimePeriod использует DateOperator в качестве модификаторов оператора, но нет информации о модификаторе для xlUniqueValues.

With Range("a1:a10").FormatConditions.Add(xlTextString, TextOperator:=xlContains, String:="egg")
     .Interior.Color = RGB(255, 166, 0)
End With

Мой код:

With Range("B6:B30").FormatConditions.Add(xlUniqueValues, xlDuplicate)
     .Interior.Color = RGB(255, 166, 0)
End With

Это выделяет все уникальные значения, независимо от того, что я ввел для оператора. Синтаксис правильный, но я не могу найти информации о том, как выделять дубликаты.

Каков правильный синтаксис для выделения дубликатов?

У меня это работает как макрос, захваченный условным форматированием (показано ниже), но я бы хотел, чтобы он работал с этим синтаксисом, так как он чище.

Range("B6:B30").Select
Selection.FormatConditions.AddUniqueValues
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).DupeUnique = xlDuplicate
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .Color = RGB(255, 166, 0)
    .TintAndShade = 0
End With

1 ответ
1

Он может быть чище, но не работает, как вы уже заметили. В FormatCondition.AddПараметр оператора в этом случае игнорируется:

Может быть одной из следующих констант XlFormatConditionOperator: xlBetween, xlEqual, xlGreater, xlGreaterEqual, xlLess, xlLessEqual, xlNotBetween или xlNotEqual. Если Type — xlExpression, аргумент Operator игнорируется.

В Уникальные ценности в документации указано, что:

Объект UniqueValues ​​использует свойство DupeUnique для возврата или установки перечисления, определяющего, должно ли правило искать повторяющиеся или уникальные значения в диапазоне.

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

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

Ваш код изменится на:

With Range("B6:B30").FormatConditions.Add(xlUniqueValues)
     .DupeUnique = xlDuplicate
     .Interior.Color = RGB(255, 166, 0)
End With

ИЛИ ЖЕ

With Range("B6:B30").FormatConditions.AddUniqueValues
     .DupeUnique = xlDuplicate
     .Interior.Color = RGB(255, 166, 0)
End With

  • Все еще новичок в макросах. Оба работают.

    — Крыса из нержавеющей стали
    5 часов назад

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *