9 楼守柔版主给出了很快的方法,各位高手的方法值得学习。
这里再给一段不用搜索的方法,速度略快于守柔版主的代码:
Sub test() Dim myStr As String Dim iColor As WdColor, cColor As WdColor Dim myP As Paragraph, myR As Range Dim t1 As Long t1 = Timer Application.ScreenUpdating = False cColor = wdColorBlue For Each myP In ActiveDocument.Paragraphs iColor = cColor For Each myR In myP.Range.Characters If myR = "只" Then myR.Select Selection.Font.Color = iColor iColor = IIf(iColor = wdColorRed, wdColorBlue, wdColorRed) End If Next myR cColor = IIf(cColor = wdColorRed, wdColorBlue, wdColorRed) Next myP Application.ScreenUpdating = True Debug.Print Timer - t1 '输出代码运行的时间 End Sub
测试时,使用了=rand(100,51)生成虚拟文本,使运行时间稍长,以便进行比较。反复测试多次,这段代码速度是比较快的,跟9楼的代码运行时间相当并略快一些。 |