Я пытаюсь выделить дубликаты, используя условное форматирование в 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 ответ
Он может быть чище, но не работает, как вы уже заметили. В 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 часов назад