我找到了一个小宏,可以将 Excel 中“[”和“]”之间的所有文本更改为红色。但我无法在 Excel 2010 中使用它,我遇到了一些错误。
有人能帮我调试一下吗?最后,我希望我的 excel 表中“[”和“]”之间的所有内容的字体都变为红色,而超出这些条件的所有内容仍为黑色。
这是我在该网站上找到的脚本:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Text As String
Dim Index1 As Long
Dim Index2 As Long
Text = Target.Text
Index2 = 1
Do
Index1 = InStr(Index2, Text, "[")
If Index1 = 0 Then Exit Do
Index2 = InStr(Index1, Text, "]")
If Index2 = 0 Then Exit Do
Target.Characters(Index1, Index2 - Index1 + 1).Font.Color = &HFF
Loop
End Sub
答案1
考虑:
Sub ColorMeRed()
Dim r As Range, v As String, L As Long
Dim RedMe As Boolean, i As Long
For Each r In ActiveSheet.UsedRange
v = r.Text
If InStr(v, "[") > 0 Then
L = Len(v)
RedMe = False
For i = 1 To L
If r.Characters(i, 1).Text = "[" Then
RedMe = True
ElseIf r.Characters(i, 1).Text = "]" Then
RedMe = False
Else
If RedMe Then r.Characters(i, 1).Font.Color = vbRed
End If
Next i
End If
Next r
End Sub
例如:
答案2
改变线路
Index1 = InStr(Index2,文本,“[”)
到
Index1 = InStr(文本,“[”)
第一个版本尝试从 Index2 的位置开始搜索。由于 Index2 尚未赋值,因此它等于 0;但 InStr 将字符串的第一个字符视为字符 1。更改后的版本只是让 InStr 从字符串的开头开始。