|
本帖最后由 413191246se 于 2021-1-30 13:43 编辑
* 受 sylun 老师 的启发,我也将“全文查找+区域查找”合并为一体,用 IIF 函数选定区域(其实选定某个区域和选定整个区域都是区域,都是 Range)。代码变得简洁了,并且能一举两得(不选则全选)。
* 昨晚在给坛友“晨晓之黎”测试代码时发现,原来认为没有问题的《FindRange》宏出错了!或只找到一个结果,或突破选定区域,变为全选了。认真查找原因,反复试验发现,我没学好 sylun 老师 的 代码的精髓,把区域的 .Start 和 .End 弄错了,正确代码应该是区域 r.End>Selection.End 时退出循环。现已修正,对于给大家带来的损失/不便,深表歉意!并请已经下载代码的朋友们重新下载最新代码,但请先删除旧的两个宏。
* 请删除宏:《FindRange_FullVersion》
* 请删除宏:《FindRange_LiteVersion》
* 请试用最新修正的《FindRange》宏:(第14行原:"If .Start >" 现修正为:"If .End >")
- Sub FindRange()
- '区域查找/未选定区域则全文查找/光标不动/不激活对象/速度极快!
- '2021/1/30/TEST-OK
- Dim r As Range
- Set r = IIf(Selection.Type = wdSelectionIP, ActiveDocument.Content, Selection.Range)
- With r.Find
- .ClearFormatting
- .Text = "[0-9.,, ^s^t]{1,}元"
- .Forward = True
- .MatchWildcards = True
- Do While .Execute
- With .Parent
- If Not Selection.Type = wdSelectionIP Then
- If .End > Selection.End Then Exit Do
- End If
- .Font.ColorIndex = wdRed
- .Start = .End
- End With
- Loop
- End With
- End Sub
复制代码 |
评分
-
1
查看全部评分
-
|