vba проверить отрицательное значение

Я написал простой код VBA, чтобы проверить, является ли значение ячейки отрицательным, и если оно отрицательное, выделить его красным. По какой-то причине я продолжаю получать «несоответствие времени выполнения». Мой код

For x = 2 To 100

Set val3 = Worksheets("Summary").Cells(x, 9)
If val3.Value < 0 Then
Worksheets("Summary").Cells(x, 9).FontColorIndex = 3

End If
Next x

Столбец 9 (столбец, который я проверяю) заполнен значениями в долларах. Спасибо заранее за вашу помощь.


person Trung Tran    schedule 31.10.2012    source источник
comment
Вы забыли точку между Font и ColorIndex?   -  person html_programmer    schedule 31.10.2012
comment
Также можно просто val3.Font.ColorIndex = 3 вместо повторного поиска одной и той же ячейки в цикле.   -  person Alex K.    schedule 31.10.2012
comment
Почему бы просто не использовать Conditional Formatting вместо VBA?   -  person Scott Holtzman    schedule 31.10.2012
comment
Привет, пользователь, если вы получили ответ, который вам подходит, отметьте его зеленой галочкой. Таким образом, будущие посетители вашего вопроса смогут найти ответ, и мы получим кредит :)   -  person PowerUser    schedule 31.10.2012


Ответы (3)


В вашем коде вам просто не хватает точки.

FontColorIndex = 3

должно быть:

Шрифт.ColorIndex = 3

person timbur    schedule 31.10.2012

Public Sub test()
   For x = 2 To 100
      Set val3 = Worksheets("Sheet1").Cells(x, 9)
      If val3.Value < 0 Then
         Worksheets("Sheet1").Cells(x, 9).Font.Color = RGB(99, 179, 73)
      End If
   Next x
End Sub

Код выше работает в Excel 2007

person elrado    schedule 31.10.2012

Спасибо за ваш пост, мне нужно было изменить отрицательные числа на нули после определенного процесса, НО я хочу проверить их, прежде чем использовать их, поэтому изменение цвета шрифта полезно, поэтому этот код хорошо работает для всего диапазона листов до (245 ,50)

Sub negnumbers()
    For x = 1 To 245
        For y = 1 To 50
        Set val3 = Worksheets("target sheet").Cells(x, y)
        If val3.Value < 0 Then
        Worksheets("target sheet").Cells(x, y).Font.ColorIndex = 3
        Worksheets("target sheet").Cells(x, y) = 0
        End If
        Next y
    Next x
End Sub
person bennyhardjono    schedule 13.04.2015