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

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

segail

Здравствуйте. Подскажите почему при добавление десятичного значения 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 цвет не изменяется.
 
Потому что, в данном случае, системный десятичный разделитель - запятая,
а при преобразовании в строку
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)

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab