You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确定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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:05:06