更改单元格中某些字符的颜色

时间:2011-10-01 04:21:14

标签: excel vba excel-vba formatting

我在单元格A1中有句“我想要50个,请”。我想让任何数字字符成为红色文本(只是数字字符)。我该怎么做呢?这是我所拥有的框架......

Sub RedText()

Dim i As Integer

For i = 1 To Len(Cells(1, 1).Value)
    If IsNumeric(Mid(Cells(1, 1).Value, i, 1)) = True Then
        'make the character red text
    End If
Next

End Sub

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:11)

您可以使用字符( 开头,长度 属性来执行此操作。您还可以将文本存储在字符串中并循环显示该字符串,这在处理多个单元格时会更快。这是一个例子:

Sub RedText()

Dim i As Long
Dim text As String

text = Cells(1, 1).Value

For i = 1 To Len(text)
    If IsNumeric(Mid$(text, i, 1)) = True Then
        Cells(1, 1).Characters(i, 1).Font.Color = vbRed
    End If
Next

End Sub

答案 1 :(得分:8)

您可以使用RegExp获得相同的效果。

正则表达式方法的优点是代码将立即隔离任何数字字符组(或跳过任何没有数字的字符串),而不是测试每个单独的字符。

因此,如果您处理相当大的数据集,它可以提供速度优势

Sub RegExpRed()

    Dim objRegex As Object
    Dim RegMC As Object
    Dim RegM As Object

    Set objRegex = CreateObject("vbscript.regexp")
    With objRegex
        .Global = True
        .Pattern = "\d+"
        If .test(Cells(1, 1).Value) Then
            Set RegMC = .Execute(Cells(1, 1).Value)
            For Each RegM In RegMC
                Cells(1, 1).Characters(RegM.FirstIndex + 1, RegM.Length).Font.Color = vbRed
            Next
        End If
    End With

End Sub