用不同的颜色绘制一个多位数的数字

时间:2018-10-05 00:26:34

标签: excel vba

我有一个单元格(“ 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

2 个答案:

答案 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