цвет не изменяется

  • Автор темы segail
  • Дата начала
S

segail

#1
Здравствуйте. Подскажите почему при добавление десятичного значения Round(.Range("D25"), 1)цвет не изменяется?
Код:
TextBox5 = Round(.Range("D25"), 0)
If TextBox5 < 0 Then TextBox5.ForeColor = vbRed
Формат ячейки числовой. Число десятичных знаков 1.
В ячейки D25 записано -4,3
При варианте Round(.Range("D25"), 0) значение в TextBox5 равно -4 цвет красный, если изменяю код Round(.Range("D25"), 1) значение в TextBox5 равно -4.3 цвет не изменяется.
 
T

Tanya

#2
Потому что, в данном случае, системный десятичный разделитель - запятая,
а при преобразовании в строку
TextBox5 = Round(.Range("D25"), 1) значение получилось с разделителем - точка: "4.3"

при последующей проверке, VB видит, что текстбокс не содержит числа и игнорит эту проверку
(по сути возникает ошибка, но она в макросе игнорится)
If TextBox5 < 0 Then TextBox5.ForeColor = vbRed

поэтому не жалеем переменных, и делаем, например вот так:
Dim dbl As Double
dbl = Round(Range("D25"), 1)
TextBox1 = dbl
TextBox1.ForeColor = iif(dbl<0, vbRed, vbBlue)

Вообще же, не знаю насколько это полезно для вашей задачки, но есть обычное и условное форматирование ячейки
оба они позволяют изменять цвет шрифта ячейки, если значения положительные/отрицательные