Excel VBA Изменение цвета ячейки - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь получить все ячейки в столбце U, которые НЕ равны 2,04 или 3,59, чтобы изменить цвет ячейки.

Вот код:

Private Sub Cell_Color_Change()

For Each cell In Range("U2:U19004")
    If cell.Value <> 2.04 Or 3.59 Then cell.Interior.ColorIndex = 3
    Next cell

End Sub

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

Ответы [ 3 ]

0 голосов
/ 17 декабря 2018

Исправьте свои AND и OR:

Private Sub Cell_Color_Change()
    For Each cell In Range("U2:U19004")
        If cell.Value <> 2.04 And cell.Value <> 3.59 Then cell.Interior.ColorIndex = 3
    Next cell
End Sub

enter image description here

РЕДАКТИРОВАТЬ # 1:

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

Private Sub Cell_Color_Change()

    Dim cv As Variant

    For Each cell In Range("U2:U19004")
        cv = Application.WorksheetFunction.Round(cell.Value, 2)
        If cv <> 2.04 And cv <> 3.59 Then cell.Interior.ColorIndex = 3
    Next cell
End Sub
0 голосов
/ 17 декабря 2018

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

Option Explicit

Private Sub set_Cell_Color_Change()

    With Range("U2:U19004")
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, Formula1:="=and(round($u2, 2)<>2.04, round($u2, 2)<>3.59)"
        .FormatConditions(.FormatConditions.Count).Font.Color = vbRed
    End With

End Sub
0 голосов
/ 17 декабря 2018
  1. Условное форматирование сделает это:
    a.используйте формулу: AND(U2<>2.04,U2<>3.59)
    б.Выберите цвет заливки
    c.Примените его к U2:U19004

  2. Но если вы хотите закодировать его, то if должно быть:

    If cell.Value <> 2.04 AND cell.Value <> 3.59 Then cell.Interior.ColorIndex = 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...