ПРЕДЛАГАЮ КОЛЛЕГАМ

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. Сохраните свою работу.

Продолжение следует

TopList