Создание окна сообщений

Создать окно сообщений достаточно легко. Простейший возможный вариант содержит только функцию MsgBox и заключенный в кавычки текст, который вы хотите вывести в этом окне: MsgBox(‘The macro has completed successfully") При запуске программы вы увидите окно, которое изображено на рис. 8.2.

Рис.4.5 Простейший возможный вариант окна сообщений содержит только кнопку ОК

Рис.4.6

Этот вид окна сообщения нужно использовать в том случае, если вы хотите напомнить пользователю о чем-нибудь. Весьма сомнительно, что кто-либо обратит должное внимание на такое окно, но зато вы-то понимаете, какие широкие возможности открываются здесь для диалога! Кроме того, есть еще пять типов окон сообщений, которые откроют вам еще больший простор для действий. Все эти окна указаны в табл. 4.1.

Таблица 4.1. Типы окон сообщений VBA
Тип окна сообщений Значение Константа
ОК., Отмена   vbOKCancel
Стоп, Повтор, Пропустить   vbAbortRetryIgnore
Да, Нет, Отмена   vbYesNoCancel
Да, Нет   vbYesNo
Повтор, Отмена   vbRetryCancel
     

Чтобы использовать одно из перечисленных окон сообщений, вам придется указать, какой именно вид окна вы хотите отобразить на экране. Кроме того, нужно немного изменить выражение: создать переменную, в которой будет храниться ответ пользователя. Фактически выражение должно выглядеть так:

Переменная = MsgBox ("Вопрос к пользователю", ТипОкнаСообщений)

Теперь добавим такую строку в код макрокоманды, которую мы записали в предыдущем разделе. Ваша главная цель — задать вопрос пользователю: "Создать записку?". Все, что требуется от вас, — создать окно сообщения с кнопками Да и Нет. В следующем примере переменной memo вы присваиваете ответ пользователя:

memo = MsgBox ("Создать записку?", 4)

Результат работы макрокоманды представлен на рис. 4.3. Кстати, того же самого результата можно достичь, используя вместо числа константу из табл. 4.1. Ее тяжелее набрать, поскольку она содержит больше символов, но зато макрос станет более понятен, когда в дальнейшем вы захотите его исправить:

memo = MsgBox ("Создать записку?", vbYesNo)

10. Что такое функции и константы

Пришла пора определиться с функциями и константами. Во-первых, такие выражения VBA, как memo = MsgBox ("создать записку?", vbYesNo), называются функциями. Функция представляет собой выражение, которое в процессе работы возвращает некоторое значение. Поскольку уровень вашего мастерства в VBA со временем будет расти, рано или поздно вы, несомненно, поймете, какую пользу можно извлечь из функций. В VBA существует множество встроенных математических и финансовых функций, которые выполнят сложные вычисления. Например, функция NPV вычисляет величину инвестиций на основе заданных величин оборота средств и дисконта.

Следующий упомянутый в заглавии термин — константа. В некотором смысле константа и переменная являются противоположностями. Вы используете переменную, если хотите присвоить ей значение, которое, вероятно, в процессе работы будет изменяться. Константа же используется в том случае, если вам необходимо работать со значением, которое во время выполнения программы должно оставаться постоянным. В последнем примере кода vbYesNo — это константа. При запуске программы с такой строкой VBA выводит именно диалоговое окно с кнопками Да/Нет, а не какое-нибудь другое.

Всякий раз, когда вы встречаетесь с выражением, которое начинается с префикса vb, можете быть уверены, — это зарезервированная в VBA константа. Когда же вы сталкиваетесь с выражением, начинающимся с префикса wd, как wdstory, значит, вы имеете дело с константой, которая доступна только в Word.

Как только пользователь сделал свой выбор, соответствующая информация сохраняется в переменной. Эта информация может храниться в двух вариантах: либо как значение, либо как константа. В табл. 4.2 продемонстрированы оба варианта.

Таким образом, в созданной макрокоманде существует два варианта: Да (соответствует 6 или константе vbYes) или Нет (соответствует 7 или vbNo).

Дополнительные возможности окон сообщений

При выводе на экран окон сообщений в конструкции MsgBox можно использовать необязательные выражения. Например, в качестве заголовка нашего окна вы можете указать строку, тогда пользователи сразу поймут, что от них требуется в этом случае. Например, следующее выражение будет выводить на экран диалоговое окно "Регистрация служащего" с кнопками Да и Нет:

EmployeeName = MsgBox ("Являетесь ли вы служащим данной компания?", vbYesNo, "Регистрация служащего")

Кроме того, в своих окнах используется любой из стандартных значков, какие вы видели в других окнах сообщений: знак стоп, вопросительный знак, восклицательный знак или значок "информация". Для этого необходимо просто указать соответствующую константу. Константы представлены в табл. 4.3, Перед константой необходимо поставить знак "плюс".

Следующий пример показывает, как создать окно сообщений, показанное на рис. 4.7.

EmployeeName = MsgBox ("Создать записку", _ vbYesNo + vbQuestion, "Создание записки")

Рис.8.7. Окно сообщений с заданным заголовком и вопросительным знаком

11.Реакция программы на выбор пользователя

Представьте себе, что вы запустили макрокоманду, в которой содержатся строки с выражением MsgBox:из предыдущего примера. Вы с.радостью щелкаете на кнопке Да. Вы ждете час, ждете второй, и что же; дальше? "Да" (в действительности, значение 6 или константа vbYes) витает где-то внутри компьютера, но ничего так и не происходит, поскольку сейчас переменная-ответ вообще ни на что не влияет. Программа просто переходит к выполнению следующего выражения, и поэтому ничего не происходит. Другими словами, необходимо связать выбор пользователя и действия программы.

Вы уже знаете один из самых простых способов сделать это — использовать конструкцию If...Then.; Программе можно дать следующую инструкцию: если пользователь щелкнет на кнопке Да, нужно сделать то-то, если пользователь выберет Нет, нужно сделать другое. Следующий пример как раз иллюстрирует такую ситуацию, когда пользователь выбирает Да, макрокоманда создает новый документ-записку, основанный на шаблоне Современная записка. Если же пользователь щелкнет на кнопке Нет, макрокоманда создаст обычный документ. Как вы увидите дальше, условная конструкция If...Then использует значения уже знакомых вам переменных.

Это немного измененный код вашего макроса AutoExec:

Sub AutoExec()

'

'AutoExec Макрос

'Макрос записан 12.11.07 Alex

memo = MsgBox("Хотите ли вы создать записку?", 4)

If memo = 6 Then

Documents.Add Template= «C:\Program Files\MS0ffice\Шаблоны\Записки Современная записка.dot"

NewTemplate=False

'

Else

Documents.Add

End If

End Sub

Обратите внимание, что после Else появилась еще одна строка:

Documents. Add

Это выражение сообщает программе, что нужно открыть новый документ, если пользователь щелкнет на кнопке Нет. Без этой строки Word не откроет никакого документа.

Вы можете записать новую макрокоманду с выражением Documents.Add, а потом перенести его в свой макрос. Однако теперь как опытный программист, вы можете просто ввести такую команду с клавиатуры.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: