Мой макрос должен сделать следующее:Слово VBA макрос работает только в режиме отладки
- Посмотрите на случаи двойных пространств.
- Замените эти экземпляры двойных пространств на отдельные пробелы.
- Снова просмотрите документ, чтобы увидеть, есть ли более двойные пробелы и заменить их, если они есть. Например, если бы где-то было изначально 4 пробела, все равно будут двойные пробелы, поэтому замените оставшиеся пробелы пробелами.
- Повторите предыдущий шаг, пока не будет больше двойных пробелов.
Проблема заключается в том, что макрос прекрасно работает в режиме отладки, но работает только один проход при нормальной работе. Что я делаю не так? Обратите внимание, что мой код может быть не самым компактным, но это не проблема; что мне действительно интересно, почему код работает только в режиме отладки, а не в обычном режиме, и как это можно исправить.
Sub Test_for_doubles()
'
' Test_for_doubles Macro
'
Dim blnFoundDoubles As Boolean
blnFoundDoubles = True
Do While blnFoundDoubles = True
Selection.HomeKey Unit:=wdStory 'Go to the beginning of the document.
blnFoundDoubles = False 'Don't go through this loop again unless we find a double this time through
With Selection.Find
.Text = " "
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
If .Found = True Then
blnFoundDoubles = True
End If
End With
Selection.Find.Execute Replace:=wdReplaceAll
Loop
End Sub
@CindyMeister: Ваше предложение сработало. Благодаря! – user6267463