我有一个单元格(“ A1”),该单元格可以有一个数字(例如154639875)或一个字符串(例如溢出),并且目标是以3种算法/字符组成的组用3种不同的颜色进行绘制。该代码适用于字符串,但是当我使用整数时,它仅使用一种颜色。
要尝试解决此问题,我将数字强制转换为字符串并将其粘贴到(“ A2”)中。
Sub MixColors()
If IsNumeric(Range("A1")) Then
Dim num As Long
Dim word As String
num = Range("A1").value
word = CStr(num)
Range("A2").value = word
Range("A2").Characters(1, 3).Font.Color = vbBlue
Range("A2").Characters(4, 3).Font.Color = vbRed
Range("A2").Characters(7, 3).Font.Color = vbGreen
'MsgBox "Integer"
Else
Range("A1").Characters(1, 3).Font.Color = vbRed
Range("A1").Characters(4, 3).Font.Color = vbBlue
Range("A1").Characters(7, 3).Font.Color = vbGreen
'MsgBox "Not Integer"
End If
End Sub
答案 0 :(得分:1)
两个选项:
1)如果将单元格的格式设置为文本,它将可以正确使用数字或文本。
2)更改为:
word = "'" & CStr(num)
将其强制为文本字段。
答案 1 :(得分:0)
数字格式必须为文本"@"
:
Sub MixColors()
If IsNumeric(Range("A1")) Then
Range("A2").NumberFormat = "@"
Range("A2").Formula = CStr(Range("A1").Value)
Range("A2").Characters(Start:=1, Length:=3).Font.Color = vbBlue
Range("A2").Characters(Start:=4, Length:=3).Font.Color = vbRed
Range("A2").Characters(Start:=7, Length:=3).Font.Color = vbGreen
'MsgBox "Integer"
Else
Range("A1").Characters(1, 3).Font.Color = vbRed
Range("A1").Characters(4, 3).Font.Color = vbBlue
Range("A1").Characters(7, 3).Font.Color = vbGreen
'MsgBox "Not Integer"
End If
End Sub