Если функция Cell.Value> (Greater Than) не работает для окрашивания ячеек - PullRequest
0 голосов
/ 20 марта 2019

Код, который я сейчас использую.

Dim iRowCq As Range
Set iRowCq = Range("B2:DJ26")

For Each Cell In iRowCq

    If Cell.Value > "0.3" or cell.value > 0.3 Then
        Cell.Interior.Color = RGB(0, 255, 0)
    End If

Next

Я хочу покрасить ячейки, которые больше, чем 0,3, в зеленый.Тем не менее, хотя 99% клеток работают, иногда встречаются клетки, которые больше 0,3 и не окрашены.Я даже попытался округлить данные до двух десятичных знаков, которые раньше не работали.Может ли кто-нибудь помочь, пожалуйста?

Снимок экрана листа Excel

Ответы [ 3 ]

1 голос
/ 20 марта 2019

Почему вы заново изобретаете условное форматирование?Это может быть сделано очень простым способом, без необходимости VBA:

enter image description here

1 голос
/ 20 марта 2019

Нельзя объединять строковые и числовые сравнения, например, для больше / меньше чем сравнения.Строка может быть не больше чем "0.3" как строка, но она всегда будет сортироваться выше, чем 0.3 как число. Комбинированная строка и числовое сравнение могут работать строго , что равно .

Возьмите числовое значение либо строки, либо смешанного числа и используйте его для сопоставления.

Dim iRowCq As Range Set iRowCq = Range("B2:DJ26")

For Each Cell In iRowCq

    If val(Cell.Value) > 0.3 Then
         Cell.Interior.Color = RGB(0, 255, 0)
    End If

Next
0 голосов
/ 20 марта 2019

Вы можете попробовать следующее:

Option Explicit

Sub test1()

    Dim rng As Range, cell As Range

    With ThisWorkbook.Worksheets("Sheet1") '<- It s better practise to specify the worksheet

        Set rng = .Range("B2:DJ26") '<- This range does not cover your whole spreadsheet. As i can see from the image the last column IS NOT "D" BUT "S" and the last row IS NOT 26 BUT 25. Setting range to *.Range("B2:SJ25")* we cover your range.

        For Each cell In rng

            If CDec(cell.Value) > 0.3 Then '<- Convert the cell value into decimal in order to compare with decimal
                cell.Interior.Color = RGB(0, 255, 0)
            End If

        Next

    End With

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