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


VBA и Office XP - часть 99


 

Sub Макрос1()

'

' Макрос1 Макрос

' Макрос записан 27.01.00

'

metka:

Selection.WholeStory

With Selection.Font

.Name = "Times New Roman"

…………

а в ее конец - инструкцию "Goto":

… … … …

ActiveDocument.SaveAs FileName:= Left(ActiveDocument.FullName, Len(ActiveDocument.FullName) - 4), FileFormat:=wdFormatRTFActiveWindow.Close

Goto metka

End Sub

 

(Не стоит поддаваться мнению, что "использование оператора Goto - дурной тон". Это не так. Каждый оператор выполняет свою функцию, и если какая-либо проблема может быть лучше всего решена применением именно этого оператора, то его и надо использовать. Дурной тон - делать сложно там, где можно сделать просто.)

Готово. Теперь наша программа обработает все открытые документы. Но… обработать-то обработала, но в конце выдала сообщение об ошибке. Можно, конечно, оставить и так, но программа, заканчивающая свою работу ошибкой, пусть и после выполнения всех необходимых действий, выглядит некрасиво. Поэтому нужно обеспечить остановку выполнения программы после того, как будут обработаны все документы. Итак, алгоритм действий программы должен быть таков:

1.       Выполнить обработку активного документа, сохранить его и закрыть.

2.       Посмотреть, есть ли еще открытые документы.

3.       Если есть, то перейти к пункту 1, если нет, то завершить работу.

"Если" - по-английски "If". Поищем по этому слову в Предметном указателе Справочной системы по VBA (из Microsoft Office 97). Получаем строчку: "Инструкция If", выбрав которую, получаем окно из различных сочетаний слов If, Then, Else и др. (рис. 5.34).

 

05_34.bmp

Рис. 5.34. Выберем нужную справку...

 

Выберем "Инструкция If…Then…Else" - вроде первое слово понятнее. Получаем справку, из которой узнаем синтаксис команды:

 

If условие Then [инструкции] [Else инструкции_else]

 

(К сожалению, в Справочной системе по VBA из Microsoft Office 2000/XP подобный поиск произвести не представляется возможным - на слово "If" ни Предметный указатель, ни Мастер ответов не реагируют.


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