Встроенные диалоговые окна

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. Создать макет формы, руководствуясь приведенным рисунком.

  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


Практические задания

На оглавление




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