В настоящее время я использую этот код для автоматической окраски шрифта в зависимости от его происхождения:
Sub Auto_Colour_Numbers()
Dim rng As Range, rErr As Range
On Error Resume Next
For Each rng In Intersect(ActiveSheet.UsedRange, Selection)
If rng.HasFormula Then
Set rErr = Range(Mid(rng.Formula, 2, Len(rng.Formula) - 1))
If CBool(Err) Then
rng.Font.ColorIndex = 1 'black
Else
rng.Font.Color = RGB(0, 176, 80) 'green
End If
Err = 0
ElseIf CBool(Len(rng.Value)) Then
rng.Font.ColorIndex = 5 'blue
Else
rng.Font.ColorIndex = xlAutomatic 'default
End If
Next rng
Set rErr = Nothing
End Sub
В основном он меняет шрифт на синий, если это просто жестко заданное число, черный, если это формула, и зеленый.если он идет с другого листа
Он работает довольно хорошо, но есть пара проблем:
1) Если, например, у меня есть номер в ячейке A1, а затем поместить формулу "= A1 "в ячейке B1, макрос изменит цвет шрифта на зеленый, даже если он не извлекается из отдельного листа
2) Если у меня есть формула, например" = 5 + 5 ", а затем добавьте к немуячейка, связанная с другого листа, так что она становится, например, "= 5 + 5 + Sheet2! E8", она все равно станет черной, когда в идеале я бы хотел, чтобы она была зеленой.Я думал, что цикл if, который ищет восклицательные знаки, может сработать для этого?
Любая помощь будет высоко ценится (пожалуйста, не принимайте во внимание ни компетентность, ни знание VBA, поскольку я очень новичок в этом!)
Спасибо,
Томас