Учитывая идею переключения xlGreaterEqual в xlLessEqual и xlGreater к xlLess Я отметил это MSDN article, который говорит:
Для правило условного форматирования набора значков, это свойство может быть установлено в onl y одна из следующих двух констант: xlGreater или xlGreaterEqual.
Это вновь искуственные в пользовательском интерфейсе, где это является ограничение на параметры, которые могут быть выбраны для условного форматирования с набор иконок правил:
Так что, возможно решением здесь является просто измените знак на данные, а затем «откройте», что с форматированием чисел и используйте код, который вы уже разместили.
Таким образом, в этом примере:
- Первый диапазон: в вашем примере
- Второй диапазон ваш пример, где каждое значение
*-1
- Третий диапазон является второй диапазон с формат пользовательских номеров
0;0;0
, чтобы сделать отрицательные числа позитивными.
Код в точности такой же, как у вас (мои изменения в диапазонах на моих листах); это знак переключение и номер формат, который получить желаемый результат:
Option Explicit
Sub Up()
Dim rngSource As Range
Dim rngCell As Range
Set rngSource = ThisWorkbook.Worksheets("Sheet1").Range("B2:E3")
For Each rngCell In rngSource
MFC rngCell
Next rngCell
Set rngSource = ThisWorkbook.Worksheets("Sheet1").Range("B6:E7")
For Each rngCell In rngSource
MFC rngCell
Next rngCell
Set rngSource = ThisWorkbook.Worksheets("Sheet1").Range("B10:E11")
For Each rngCell In rngSource
MFC rngCell
Next rngCell
End Sub
Private Sub MFC(ByVal rng As Range)
Dim lngThisNumber As Long
Dim lngPreviousNumber As Long
lngThisNumber = rng.Value
lngPreviousNumber = rng.Offset(0, -1).Value
With rng
.FormatConditions.Delete
.FormatConditions.AddIconSetCondition
With .FormatConditions(1)
.SetFirstPriority
.IconSet = ThisWorkbook.IconSets(xl3Arrows)
With .IconCriteria(2)
.Type = xlConditionValueFormula
.Value = "=" & rng.Offset(, -1).Address
.Operator = xlGreaterEqual
End With
With .IconCriteria(3)
.Type = xlConditionValueFormula
.Value = "=" & rng.Offset(, -1).Address
.Operator = xlGreater
End With
End With
End With
End Sub
Обратите внимание, что я попробовал это для .Value
назначения:
.Value = "=" & rng.Offset(, -1).Address & "*-1"
Так что *-1
будет сделан во время выполнения, когда форматирование было применено - однако это не получило желаемого результата вообще.
Если вы хотите изменить критерии значков, почему бы вам не изменить код, задающий критерии значка? –
Не просто изменить значок, но изменить правило сравнения, чтобы установить стрелку вверх, если число меньше предыдущего и наоборот. – Clementine
Я попробовал xlLess вместо xlGreater, но это не сработало. – Clementine