我在单元格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
非常感谢任何帮助。
答案 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