-2
Ich fand diesen Code online, um mehrere Wörter zu suchen und hervorzuheben. Es dauert ungefähr 10 Minuten, um es auf einem 15-seitigen Dokument auszuführen. Ich habe mich gefragt, ob es schneller gemacht werden könnte.Wie kann man einen VBA-Code beschleunigen?
Sub HighlightMultipleWords()
Dim Word As Range
Dim WordCollection(2) As String
Dim Words As Variant
'Define list.
'If you add or delete, change value above in Dim statement.
WordCollection(0) = "word1"
WordCollection(1) = "word2"
WordCollection(2) = "word3"
'Set highlight color.
Options.DefaultHighlightColorIndex = wdYellow
'Clear existing formatting and settings in Find feature.
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
'Set highlight to replace setting.
Selection.Find.Replacement.Highlight = True
'Cycle through document and find words in collection.
'Highlight words when found.
For Each Word In ActiveDocument.Words
For Each Words In WordCollection
With Selection.Find
.Text = Words
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
Next
End Sub
Warum die verschachtelte Schleife? Es sieht für jedes einzelne Wort in dem Dokument, das Sie für jedes Wort in Ihrer Sammlung (3 von ihnen) durchlaufen möchten, so aus, dass ein 'ReplaceAll' ausgeführt wird. Du prüfst jedes Wort und führst diese drei Ersetzungen gegen sie aus. Verliere die äußere Schleife. – Dave
Danke. Ich werde das versuchen. –
Sie können dies bei [codereview] (http://codereview.stackexchange.com/) veröffentlichen. Neben dem Entfernen der äußeren Schleife würde ich vorschlagen, Ihre Variablen 'Word' und' Words' umzubenennen, um zu vermeiden, sie mit ... 'Wort' und' .Words' zu verwechseln. – arcadeprecinct