我的工作表中有单元格,其中包含一堆文本,但方括号内的某些文字看起来像这样:
[分配:此处有一些文字]
[选择:这里的一些文字]
我需要一个宏来改变任何文本的颜色,从分配到绿色开始(包括分配)和任何以选择蓝色开始的文本(也包括选择)。无论是最简单的,支架本身都可以改变颜色。
我已经尝试了多种方法来做到这一点,但无法弄清楚正则表达式或替换如何做到这一点。我最近来的是在[]括号内加上所有文本,但不区分“分配”或“选择”。
感谢帮助
编辑:
到目前为止我所拥有的:
Sub test()
Dim r As Range
Dim m As Object
Dim test As Range
Dim strInput As String
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = True
.Pattern = "\[(.*?)\]"
For Each r In Range("C2:C2")
If .test(r.Value) Then
For Each m In .Execute(r.Value)
r.Value = Replace(r.Value, m.Value, UCase(m.Value))
Next
End If
Next
End With
End Sub
答案 0 :(得分:1)
Range(SomeRange).Characters(start,length).Font.Color = vbGreen
要获得开始和长度,请使用Instr
start = Instr(1, Range(SomeRange).Value, "[Assign", vbTextCompare)
length = Instr(start, Range(SomeRange).Value, "]", vbTextCompare) - start + 1
如果start
为零,则找不到字符串。
-
的更新:强> 的
在我的脑海中,对于同一个单元格中的多个实例:
start = 1
Do
start = Instr(start, Range(SomeRange).Value, "[Assign", vbTextCompare)
If start > 0 Then
length = Instr(start, Range(SomeRange).Value, "]", vbTextCompare) - start + 1
if length > 1 then Range(SomeRange).Characters(start, length).Font.Color = vbGreen
start = start + length
End If
Loop While start > 0