1. Окно для вывода сообщения программы. Создается с помощью встроенной функции MsgBox, которая в простейшем случае вызывается как процедура.
Синтаксис: MsgBox “Текст сообщения”, Кнопки, “Текст заголовка”
Параметр Кнопки задает, какие кнопки будут отображены в окне: 0 — ОК, 1 — ОК и Отмена, 3 — Да, Нет, Отмена, 4 — Да, Нет.
Текст сообщения можно разделить на нескольких строк. Для этого используется символ перевода строки Chr(10), а для сцепления строк символ &. Например, инструкция
MsgBox "Сегодня" & Chr(10) & Format(Date, "DD MMMM") & "?", 4, "Вопрос"
отобразит сообщение, показанное на рис. 8.2-а.

а) б)
Рис. 8.2. Встроенные диалоговые окна
2. Окно для ввода данных. Создается с помощью встроенной функции InputBox, которая возвращает вводимое в строку ввода значение.
Синтаксис: InputBox(“Текст сообщения”, “Текст заголовка”)
Например, для присвоения переменной В значения, введенного в поле диалогового окна нужно записать: В = InputBox("Введите число", "Тестовое окно") (рис. 8.2-б).
Разработка UserForm
Форма представляет собой диалоговое окно, содержащее различные элементы управления. Предназначена для ввода данных с их последующей обработкой. Порядок:
1. В редакторе VBA выполнить команду Insert (Вставка) —UserForm, после чего появится окно формы (3) (рис. 8.1).
2. Через меню View (Вид) настроить (при необходимости) окно редактора: Project Explorer (1), Properties Window (2), ToolBox (4) (рис.8.1).
3. Разместить элементы управления в нужных местах формы, перетаскивая их мышью с панели элементов.
4. Изменить, если нужно, свойства формы и элементов в окне свойств.
5. Написать необходимые процедуры обработки событий для элементов управления.
Двойной щелчок по элементу открывает окно программы с шаблоном процедуры обработки основного события. Переключение между формой и кодом осуществляется также клавишами F7 Û Shift + F7.
6. Протестировать работу формы (меню Run (Запуск) и Debug (Отладка)).
Пример 8.3. Разработать форму для расчета амортизации различными методами.

Выполнение:
1. Создать макет формы, руководствуясь приведенным рисунком.
- Изменить указанные ниже свойства элементов:
| Элемент | Свойство | Значение |
| TextBox4 | Value | |
| Visible | False | |
| TextBox6 | Value | |
| SpinButton1 | Max | |
| Min | ||
| SmallChange | ||
| OptionButton1 | Value | True |
| OptionButton2 | Value | False |
| OptionButton3 | Value | False |
3. Написать процедуры обработки событий для следующих элементов:
3.1. SpinButton1_Change — при возникновении данного события значение счетчика должно присваиваться элементу TextBox6.
Private Sub SpinButton1_Change()
TextBox6.Value = SpinButton1.Value
End Sub
3.2. OptionButton1_Click — при возникновении этого события в форме должен исчезать элемент TextBox4 и его подпись.
Private Sub OptionButton1_Click()
TextBox4.Visible = False
Label4.Visible = False
End Sub
3.3. OptionButton2_Click и OptionButton3_Click — при возникновении этих событий в форме должен появляться элемент TextBox4 и его подпись.
Private Sub OptionButton2_Click()
TextBox4.Visible = True
Label4.Visible = True
End Sub
Private Sub OptionButton3_Click()
TextBox4.Visible = True
Label4.Visible = True
End Sub
3.5. CommandButton1_Click — при возникновении данного события должна вычисляться величина амортизации выбранным методом, исходя из данных, введенных в поля ввода 1—4, и результат выводиться в TextBox5, причем количество знаков после запятой должно соответствовать значению установленному в TextBox6. Вычисление амортизации производится по функциям VBA, имеющим аналоги среди функций рабочего листа, которые записаны в скобках: SLN (АМР), SYD (АМГД), DDB (ДДОБ). Данные пары функций имеют одинаковые аргументы. Функции SLN, SYD, DDB требуют тип аргументов Double.
Private Sub CommandButton1_Click()
Dim a1 As Double, a2 As Double, a3 As Double
Dim a4 As Double, a5 As Double, i As Byte
a1 = TextBox1.Value
a2 = TextBox2.Value
a3 = TextBox3.Value
a4 = TextBox4.Value
i = TextBox6.Value
If OptionButton1.Value = True Then a5 = SLN(a1, a2, a3)
If OptionButton2.Value = True Then a5 = SYD(a1, a2, a3, a4)
If OptionButton3.Value = True Then a5 = DDB(a1, a2, a3, a4)
Select Case i
Case 0
TextBox5.Value = Format(a5, "0")
Case 1
TextBox5.Value = Format(a5, "0.0")
Case 2
TextBox5.Value = Format(a5, "0.00")
Case 3
TextBox5.Value = Format(a5, "0.000")
Case 4
TextBox5.Value = Format(a5, "0.0000")
Case 5
TextBox5.Value = Format(a5, "0.00000")
End Select
End Sub
Практические задания
На оглавление






