ПРЕДЛАГАЮ КОЛЛЕГАМ
VBA в приложении к Excel, Word и Power Point
О.А. Житкова, Т.И. Панфилова
Москва
Продолжение. Начало в № 1 – 5/2006
Занятие № 6. Стандартные диалоговые
окна
Вопросы:
- Окно сообщений MsgBox
- Окно ввода InputBox
- Объединение текстовых строк.
Окно сообщения
Функция для создания окна сообщений
записывается так:
MsgBox (Сообщение [,Атрибуты] [,Заголовок]).
Сообщение — текст, отображаемый в
диалоговом окне, является обязательным
аргументом. Эта строка должна быть заключена в
двойные кавычки. Текст может содержать до 1024
символов. Использование круглых скобок
указывает на то, что в данном случае MsgBox является
функцией, возвращающей значение.
Атрибуты определяют особенности
окна, т.е. различные кнопки и значки, отображаемые
в нем. Аргумент Атрибуты позволяет управлять
следующими параметрами окна сообщения:
количеством кнопок в окне, типом кнопок и их
размещением в окне, пиктограммой, отображаемой в
окне.
Этот аргумент является целым числом и
для достижения желаемого результата может быть
представлен как сумма двух слагаемых:
Атрибуты = Параметр1 + Параметр2.
Значение Параметр1 устанавливает
число и тип кнопок в окне сообщений.
В таблице приведены возможные
значения этого параметра:

Если аргумент Атрибуты не указан,
то VBA предполагает, что в диалоговом окне
сообщений присутствует только кнопка “ОК”.
Значение Параметр2 определяет вид
сообщения и пиктограмму, которая помещается в
окно сообщений.

Заголовок — строка в заголовке
окна сообщений. Если этот аргумент опущен, то в
строке заголовка отображается “Microsoft Excel”.
MsgBox как функция должна возвращать
значение. Синтаксис функции MsgBox совпадает с
синтаксисом одноименного оператора.
Возвращаемое значение зависит от кнопки, нажатой
пользователем. В таблице представлен список
значений, возвращаемых функцией MsgBox.

Окно ввода
Окно ввода, как и окно сообщений, может
отображаться оператором или функцией.
Функция InputBox применяется для ввода
чисел или текста. Эта функция отображает
диалоговое окно ввода, содержащее поле ввода и
поясняющий текст; ее синтаксис таков:
InputBox(Сообщение[, Заголовок ] [,
Умолчание]).
Сообщение — единственный
обязательный аргумент; он служит подсказкой
пользователю, какую информацию необходимо
занести в поле ввода.
Заголовок — это надпись в строке
заголовка окна ввода.
Умолчание — значение, которое
будет отображаться в поле ввода по умолчанию,
пока пользователь не введет свое значение. Если
этот аргумент опустить, то поле ввода
отображается пустым.
Возвращаемым значением данной функции
является информация, вводимая пользователем.
Возвращаемое значение можно использовать в
окнах сообщений, поместить в ячейку рабочего
листа, применить в вычислениях и т.д.
В отличие от MsgBox параметр Атрибуты
отсутствует, но появляется параметр Умолчание:
в нем задается строка, которая по умолчанию будет
находиться в текстовом поле. При нажатии кнопки
“ОК” содержимое поля присваивается переменной,
а при нажатии на кнопку “Cancel” возвращается
строка нулевой длины.
ВНИМАНИЕ! Функция InputBox возвращает
строку, а функция MsgBox возвращает значение целого
типа.

Объединение текстовых строк
При объединении нескольких текстовых
строк в одну используется символ конкатенации
“&” (амперсенд) или “+” (плюс). Можно
объединять числовые и символьные значения.
Практическая работа № 6–1 “Создание окон
сообщений”
Спроектируйте окна сообщений с
помощью MsgBox.
1. Откройте Excel, переименуйте Лист1 в
“Сообщения”.
2. На листе Excel создайте кнопку: .
3. Присоедините к кнопке программу, в
результате которой появятся окна с различными
сообщениями. Например:
Private Sub CommandButton1_Click()
MsgBox "Очистить папку?", 32 + 4,
"Очистка папки"
MsgBox "У Вас заканчиваются
деньги!",
48, "Предупреждение"
MsgBox "До конца работы осталось 30
минут", 64,
"Информационное сообщение"
MsgBox "Спасите наши души!!!", 18,
"SOS"
End Sub


4. Спроектируйте несколько окон
сообщений и оформите их посредством MsgBox.
5. Сохраните свою работу.
Практическая работа № 6–2 “Круг”
Используя MsgBox и InputBox для ввода и вывода
значений, подсчитайте площадь круга, если
известен его радиус.
1. Откройте Excel, переименуйте Лист1 в
“Круг”.
2. Используя MsgBox и InputBox, подсчитайте
площадь круга, если известен его радиус. Для
этого:
- На листе Excel создайте кнопку.
- Присоедините к кнопке программу.
Private Sub CommandButton1_Click()
Dim S As Single, R As Single
R = InputBox("Введите радиус
круга","Площадь круга")
S = 3.14 * R ^ 2
MsgBox "Площадь круга =
"&S&"квадратных сантиметров"
End Sub

После нажатия на кнопку “ОК” получим
результат:

3. Сохраните свою работу.
Практическая работа № 6–3 “Как вас
зовут?”
1. На листе Excel с помощью Панели
элементов управления спроектируйте кнопку
вызова формы и назовите ее “Имя”, Лист1 также
переименуйте в лист “Имя”.

2. Выделите кнопку, вызовите через
правую кнопку мыши Свойства и на панели Properties
отформатируйте ее.

3. Выделите кнопку “Имя”, выберите на
панели элементов управления кнопку “Исходный
текст” .
4. Запишите программу:
Private Sub CommandButton1_Click()
Dim Имя As String
Имя = InputBox("Как вас зовут? ",
"Вопрос")
MsgBox "Привет!" & Имя, 1,
"Приветствие"
End Sub
5. Переключитесь на лист “Имя”.
6. Отключите режим конструктора .
7. При запуске программы экран будет
выглядеть следующим образом:


8. Спроектируйте аналогичные кнопки.
Например, со следующими вопросами: “Сколько Вам
лет?”, “Что Вам нравится?” и т.д.

9. Сохраните свою работу.
Практическая работа № 6–4 “Моя
Вселенная”
Спроектируйте вопросник “Моя
Вселенная”. Например:
Мое любимое занятие...
Мой любимый цвет...
Мое любимое животное…
Мой лучший друг...
Мой любимый звук...
Мой любимый запах...
Моя любимая игра...
Моя любимая одежда...
Моя любимая музыка...
Мое любимое время года...
Что я больше всего на свете люблю
делать...
Место, где я больше всего люблю
бывать...
Мой любимый певец или группа...
Мои любимые герои...
Я чувствую в себе способности к...
Человек, которым я больше всего
восхищаюсь...
Лучше всего я умею...
Я знаю, что смогу...
Я уверен в себе потому, что...
1. На листе Excel создайте кнопку,
назовите ее “Ответь на вопросы”.

2. Выделите кнопку “Ответь на
вопросы”, нажмите на панели элементов
управления кнопку “Исходный текст” .
3. Запишите программу таким образом,
чтобы после первого вопроса и ответа на него
вызывался второй вопрос и т.д.:
Private Sub CommandButton1_Click()
Dim Вопрос As String
Вопрос = InputBox("Ваше любимое
занятие? ",
"Любимое занятие")
MsgBox "Мое любимое занятие — " &
Вопрос, 1, "Ответ"
Вопрос = InputBox("Ваш любимый цвет?
",
"Любимый цвет")
MsgBox "Мой любимый цвет — " &
Вопрос, 1, "Ответ"
…..
End Sub
4. Не забудьте изменить имя заголовка
формы. Оно должно соответствовать вопросу.
Например:

5. Сохраните свою работу.
Практическая работа № 6–5 “Мне
нравится”
Спроектируйте вопросник “Мне
нравится”:
Мне нравится в школе то, что…
Мне не нравится в школе то, что…
Я просто в восторге от того, что…
Мне не нравится на уроке то, что…
Вот было бы здорово, если бы на уроке
можно было бы…
Подберите вопросы и составьте
самостоятельно задание.
Практическая работа № 6–6
“Вычислитель”
Спроектируйте на листе Excel кнопки
вызова форм, с помощью которых можно сложить,
вычесть, умножить (и т.д.) два числа.
1. На листе Excel с помощью Панели
элементов управления спроектируйте кнопку
вызова формы и назовите ее “Сложение”;
переименуйте Лист1 в “Вычислитель”.
2. Выделите кнопку, вызовите через
правую кнопку мыши Свойства и отформатируйте ее
на панели Properties.
3. В кнопке “Исходный текст” запишите программу:
Private Sub CommandButton1_Click()
Dim Число1 As String, Число2 As String
Dim a As Integer, b As Integer
Число1 = InputBox("Введите первое
число", "Первое число")
Число2 = InputBox("Введите второе
число", "Второе число")
a = Val(Число1)
b = Val(Число2)
MsgBox Число1 & "+" & Число2 &
"=" & a + b, 1, "Сложение"
End Sub
4. Проверьте работоспособность кнопки
“Вычислитель”. У вас должно получиться:

5. Спроектируйте кнопки “Вычитание”,
“Умножение”, “Деление”, “Возведение в
квадрат”, “Корень квадратный”.
6. Сохраните свою работу.
Практическая работа № 6–7
“Пословицы”
Спроектируйте на листе Excel кнопку
вызова формы, с помощью которой можно дополнить
пословицу “ПУГАНАЯ ВОРОНА и... боится”.
1. С помощью Панели элементов
управления спроектируйте кнопку вызова формы и
назовите ее “Пословицы”, переименуйте Лист1 в
“Пословицы”.
2. Выделите кнопку, вызовите через
правую кнопку мыши Свойства и отформатируйте ее
на панели Properties.
3. К кнопке “Исходный текст” присоедините
программу:
Private Sub CommandButton1_Click()
Dim Ответ As String
Ответ = InputBox("Дополни пословицу:
ПУГАНАЯ ВОРОНА и... боится", "Введи ответ")
MsgBox "Пуганая ворона и" & Ответ
& " боится", 1, "Пословица"
End Sub
У вас получится:

4. Дополните программу пословицами
таким образом, чтобы после первого вопроса и
ответа на него вызывался второй вопрос и т.д.
5. Сохраните работу.
Практическая работа № 6–7 “Полевой
букет”
Эта работа позволит понять, как
переносить информацию из диалоговых окон в
пользовательскую форму.
Соберем на поляне букет из четырех
наименований цветов.
1. После щелчка кнопки “Пуск” должны
последовательно появиться диалоговые окна для
ввода названий четырех цветов (для мальчиков —
автомобилей).
2. Поместите введенные текстовые
строки в поля метки пользовательской формы.
3. Проведите объединение этих
текстовых строк.
4. В первом случае выведите
объединенные текстовые строки в поле
пользовательской формы в одну строку.
5. Во втором случае расположите
объединенные текстовые строки в поле
пользовательской формы “столбиком”. Для вывода
текстовых строк в столбик надо при объединении
между текстовыми строками вставить особый
невидимый символ — символ перехода на новую
строку. В коде ASCII это 13. Функция CHR(Код)
преобразовывает код в один символ. Символ
перехода на новую строку — CHR(13).

Окно для ввода текстовых строк

Образец пользовательской формы
Программа на кнопку “Пуск”
Private Sub CommandButton1_Click()
Rem Объявление переменных
Dim slovo1 As String
Dim slovo2 As String
Dim slovo3 As String
Dim slovo4 As String
Dim Slova As String
Rem Ввод текстовых строк через
окно ввода
slovo1 = InputBox("Введите название
цветка 1", "Вопрос")
Rem Размещение введенной
текстовой строки в поле ПФ
Label1.Caption = slovo1
slovo2 = InputBox("Введите название
цветка 2", "Вопрос")
Label2.Caption = slovo2
slovo3 = InputBox("Введите название
цветка 3", "Вопрос")
Label3.Caption = slovo3
slovo4 = InputBox("Введите название
цветка 4", "Вопрос")
Label4.Caption = slovo4
Rem Объединение текстовых строк
для вывода в строку
Slova = slovo1 + " " + slovo2 + " " + slovo3 +
" " + slovo4
Rem Размещение объединенной
текстовой строки в поле ПФ
Label5.Caption = Slova
Rem Подготовка переменной Slova для
нового объединения строк
Slova = ""
Rem Объединение текстовых строк
для вывода в столбик
Slova = slovo1 + " " + Chr(13) + slovo2 + " " +
Chr(13) + slovo3 + " " + Chr(13) + slovo4
Rem Размещение объединенной
текстовой строки в поле ПФ
Label6.Caption = Slova
End Sub
6. Создайте на листе Excel кнопку для
вывода формы.
7. Сохраните свою работу.
Продолжение следует |