如何确定Word VBA中Find方法找到内容的位置
解决方法
当Find.Execute返回True时,你代码里的ActiveDocument.Range已经自动定位到匹配的"whatever"实例上了。直接基于这个Range的Start和End属性创建新的Range对象,就能保存当前匹配内容的位置,避免后续Collapse操作影响它。
修改后的完整代码:
Sub FindWhatever() Dim foundRange As Range With ActiveDocument.Range With .Find .Wrap = wdFindStop .Text = "whatever" End With Do While .Find.Execute = True ' 创建指向当前匹配内容的Range对象 Set foundRange = ActiveDocument.Range(.Start, .End) ' 将该Range传入目标子程序,示例: ' YourTargetSubroutine foundRange .Collapse wdCollapseEnd Loop End With End Sub
关键说明
- 必须创建新的Range对象:原Range在执行
.Collapse wdCollapseEnd后会收缩到匹配内容的末尾,若直接传递原Range给子程序,后续循环操作会改变它的指向。 - 利用原Range的
Start和End属性:这两个属性在Find.Execute成功后,正好对应当前匹配文本的起始和结束位置。
内容的提问来源于stack exchange,提问作者Kirk Hansen
相关产品推荐
相关产品推荐

