我一辈子都无法弄清楚我需要将循环放在我的查找和替换函数中的位置。
我有连续有 3+ 换行符的文档。我正在编写一个查找和替换函数,该函数查找 3 个换行符并将其替换为仅 2 个换行符。我需要循环访问它,直到只剩下 2 个换行符。
查看文档示例的预期结果和实际结果。
我试过把它放在"与选择.查找"中,但它不起作用?
Private Function FindReplaceLineBreaks()
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^p^p^p"
.Replacement.Text = "^p^p"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Function
Document example:
Chapter 1
Linebreak
Linebreak
Linebreak
Linebreak
Linebreak
This is some text etc. etc.
Linebreak
Linebreak
Linebreak
Linebreak
Linebreak
Linebreak
Linebreak
Linebreak
Linebreak
Text
Expected:
Chapter 1
Linebreak
Linebreak
This is some text etc. etc.
Linebreak
Linebreak
Text
最简单的方法是使函数递归(函数自行调用(。将这一行添加到函数的底部:
If (Selection.Find.Found = True) then call FindReplaceLineBreaks
试试这个:
Private Function FindReplaceLineBreaks()
with Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^p^p^p"
.Replacement.Text = "^p^p"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Replace:=wdReplaceAll)
Loop
End With
End Function