这可能很简单,但我无法让它发挥作用。
我需要搜索我的文档,找到包含字符串'alog'的单词并添加'ue'。例如,'catalogs' - > '目录'。
以上工作正常,但我无法使下一位工作:如果找到的字符串在'log'之后已经有'ue',我不想添加另一个'ue'。
从宏访问的子程序如下。我已经尝试将以下行添加到'while execute'部分,但'selection'总是证明是光标碰巧的那个词。
With Selection
.Expand unit:=wdWord
End With
我如何i)选择找到的范围的内容和ii)将两个字符的新选择展开以查看这两个字符是否为“ue”?
非常感谢。
Sub do_replace2(old_text As String, new_text As String, Count_changes As Integer)
' Replaces 'log' with 'logue'
' Ignores paragraphs in styles beginning with 'Question'
Dim rg As Range
Set rg = ActiveDocument.Range
With rg.Find
.Text = old_text
While .Execute
If Left(rg.Paragraphs(1).Style, 8) <> "Question" Then
rg.Text = new_text
With ActiveDocument.Comments.Add(rg, "Changed from '" & old_text & "'")
.Initial = "-logs"
.Author = "-logs"
End With
Count_changes = Count_changes + 1
End If
rg.Collapse wdCollapseEnd
Wend
End With
End Sub
答案 0 :(得分:0)
我不太确定我是否按照问题的第一部分“我如何选择找到的范围的内容”。 rg
变量已包含搜索结果。如果您想选择它,只需使用rg.Select
即可。这可能在调试时很有用(因此您可以看到当您单步执行代码时Range
的位置),但实际上没有任何其他理由使用 {{{ 1}}来自你问题的代码中的对象。您可以改为使用Selection
对象。
至于问题的第2部分“我如何......用两个字符扩展新选择”,您需要做的就是在Range
的{{1}}属性中添加2。由于您只是将其用于测试(并且因为.End
方法可能很狡猾),请在Range
的副本上进行测试:
.Find