我有一个单元格("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
两个选项:
1(如果将单元格格式化为文本,它将与数字或文本正常工作。
2( 更改为:
word = "'" & CStr(num)
这会强制它到文本字段。
数字格式需要为文本"@"
:
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