Joh*_*ard 8 excel formatting vba excel-vba
我在单元格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
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
aev*_*nko 12
您可以使用字符(开始,长度)属性来执行此操作.您还可以将文本存储在字符串中并循环显示该字符串,这在处理多个单元格时会更快.这是一个例子:
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
Run Code Online (Sandbox Code Playgroud)
您可以使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36095 次 |
| 最近记录: |