在那里,
我需要检查MS Word文档中是否找到了两次字符串。
到目前为止,我的方法是使用.Find方法搜索字符串,如果.Execute为true则增加计数器。如果计数器是> 1消息框通知用户冗余。
代码搜索字符串并正确找到它,但是,.Find方法在解析整个文档一次之前似乎没有自行循环。因此,计数器始终为1,并且不会弹出消息框。
你们有没有想过如何循环这段代码?我似乎找不到合适的休息条件......
最好的问候
daZza
代码:
Dim wrdRange As Object
Dim searchString As String
Dim redundancyCounter As Integer
redundancyCounter = 0
Set wrdRange = wrdDoc.Content
wrdRange.Find.ClearFormatting
wrdRange.Find.Replacement.ClearFormatting
With wrdRange.Find
.Text = searchString
.Forward = True
.wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
If wrdRange.Find.Execute Then
redundancyCounter = redundancyCounter + 1
Debug.Print redundancyCounter
If redundancyCounter > 1 Then
MsgBox "Für diese Version existiert bereits eine Tabelle in der Änderungshistorie!" & vbNewLine & _
"Bitte überprüfe die Änderungshistorie manuell und nimm ggf. Änderungen vor.", vbCritical, "Warnung, mögliche Redundanz erkannt!"
End If
End If
编辑:使用MatchWildcards建议(没有冗余时抛出误报)
With wrdRange.Find
.Text = searchString & "*" & searchString
.Forward = True
.wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
If wrdRange.Find.Execute Then
MsgBox "Für diese Version existiert bereits eine Tabelle in der Änderungshistorie!" & vbNewLine & _
"Bitte überprüfe die Änderungshistorie manuell und nimm ggf. Änderungen vor.", vbCritical, "Warnung, mögliche Redundanz erkannt!"
End If
答案 0 :(得分:0)
While wrdRange.Find.Execute
redundancyCounter = redundancyCounter + 1
Wend