Не зная, где происходит ваша ошибка, с первого взгляда могу сказать, что
Value = Replace(objXLWs.Cells(24, "C").Text, vbLf, "<br>")
If Value.Fore.Color.RGB = RGB(255, 0, 0) Then
'nt.Color = vbRed Then
'If Value.Font.Color = vbRed Then
Value = -(Value)
End With
Отсутствует End If
прямо перед вашим End With
(это действительно помогает сделать отступ).
Кроме этого, я не вижу нигде, где инициализируется переменная objXLws
или Value
, для чего я бы порекомендовал поместить Option Explicit
в верхней части вашего модуля кода. Объявление переменных важно.
Кроме того, я сомневаюсь, что вам вообще нужны Value
или objXLWs
в качестве переменных, поскольку все, что вы делаете, это поменяйте знак и измените цвет. Кроме того, синтаксис для изменения цвета шрифта ячейки Cell.Font.Color = RGB()
Что-то, что могло бы работать лучше для вас, было бы
Sub DoWork(wb As Workbook)
With wb.Sheets(3)
If .Cells(24, "C").Font.Color = RGB(255, 0, 0) Then
.Cells(24, "C") = .Cells(24, "C") * -1
End if
End With
End Sub