VBA для тех кто любит думать


VBA и Office XP - часть 88


Заметив повторения слов “Selection.Find” в первых четырех строчках, можно посчитать, что и их содержимое можно включить в блок оператора “With”. Проверим-ка это. Чуть ниже последнего записанного нами макроса напишем строчку: “Sub experience1()” (имя после “Sub” может быть любым, важно лишь, чтобы оно не совпадало с какой-либо командой Visual Basic for Application). Нажмем Ввод - парой строчек ниже редактор Visual Basic for Applications напишет: “End Sub”. С помощью команд “Копировать” и “Вставить” скопируем из нашей программы в текст нового макроса блок “With Selection.Find”. А затем переместим все строчки, относящиеся к отражению в макросе работы окна “Найти и заменить” в блок “With Selection.Find”, убрав слова “Selection.Find”:

 

Sub experience1()

With Selection.Find

.ClearFormatting

.ParagraphFormat.Alignment = wdAlignParagraphLeft

.Replacement.ClearFormatting

.Replacement.ParagraphFormat.Alignment = wdAlignParagraphJustify

.Text = ""

.Replacement.Text = ""

.Forward = True

.Wrap = wdFindContinue

.Format = True

.MatchCase = False

.MatchWholeWord = False

.MatchWildcards = False

.MatchSoundsLike = False

.MatchAllWordForms = False

.Execute Replace:=wdReplaceAll

End With

End Sub

 

Попробуем программу в деле. Откроем еще один документ из общего набора и запустим клавишей F5 новый макрос на выполнение (курсор должен стоять внутри текста запускаемого макроса)...

Все прекрасно! Замена произошла так, как необходимо. Значит, ясно - так сокращать текст программы можно.

Осталось еще несколько интересных строчек, конкретное значение которых может вызвать вопросы - “.Forward = True”, “.Wrap = wdFindContinue”, “.Execute Replace:=wdReplaceAll”. Ну, первая - это направление поиска - вперед или назад (в последнем случае там было бы значение “False” - то есть "не вперед"). Но что значит вторая? А запишем-ка для выяснения еще макрос с такой же заменой выравнивания влево на выравнивание по ширине, но с разными параметрами направления поиска.


Начало  Назад  Вперед