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

在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 

任何帮助将不胜感激。

你可以使用字符( 开始,长度 属性来做到这一点。 您也可以将文本存储在一个string中并循环,这对您处理多个单元格时会更快。 这里是一个例子:

 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 

您可以使用RegExp来达到同样的效果。

正则expression式的优点是代码将立即隔离任何数字字符组(或跳过任何没有数字的string),而不是testing每个单独的字符。

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

 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