• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы 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 цвет не изменяется.
 
T

Tanya

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!