Пользовательские формы

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

Приведем создание проекта «Вычисление площади треугольника по трем известным сторонам» по шагам.

Шаг 1

1. Выполнить Сервис ® Макрос ® Редактор Visual Basic.

Статья 6 - Картинка 1

2. Вставить форму с помощью меню Insert ® UserForm или кнопкой Статья 6 - Картинка 2.

Статья 6 - Картинка 3

3. Дать внутреннее имя форме Форма_Герон с помощью окна Properties, выставляя свойство (Name) равное Форма_Герон.

Статья 6 - Картинка 4

4. Присвоить заголовку форму имя Герон с помощью окна Properties, выставляя свойство Caption равное Герон.

Статья 6 - Картинка 5

5. Создать надпись «Вычисление площади треугольника» с помощью инструмента Надпись Статья 6 - Картинка 6 панели элементов. При необходимости воспользоваться окном Properties, свойствами Font, Align.

Статья 6 - Картинка 7

6. В результате получиться следующий рисунок.

Статья 6 - Картинка 8

Шаг 2

1. Создать блок для ввода данных стороны a с помощью инструмента ПолеСтатья 6 - Картинка 9 панели элементов. В окне Properties, присвоить ему свойство (Name) равное a_Textbox.

Статья 6 - Картинка 10

2. Создать надпись «Сторона A=» с помощью инструмента Надпись Статья 6 - Картинка 6 панели элементов. При необходимости воспользоваться окном Properties, свойствами Font, Align.

3. В результате получиться следующее.

Статья 6 - Картинка 12

4. Аналогично создать блоки для ввода значений сторон B, C и вывода пло­ща­ди треугольника S. Для B — b_Textbox, C — c_Textbox, S — s_Textbox.

Статья 6 - Картинка 13

Шаг 3

1. Создать кнопку «Вычислить!» с помощью инструмента КнопкаСтатья 6 - Картинка 14 панели элементов. В окне Properties, выставить свойства (Name) равное Calc_Button, Caption равное «Вычислить!».

Статья 6 - Картинка 15

2. Сделать двойной щелчок на кнопке Вычислить! и ввести программный код.

Private Sub Calc_Button_Click()
Dim A, b, c, p, s As Double
Dim d1, d2, tr_ok As Boolean
A = Val(a_TextBox.Value)
b = Val(b_TextBox.Value)
c = Val(c_TextBox.Value)
d1 = (A >= 0) And (b >= 0) And (c >= 0)
d2 = (A + b > c) And (A + c > b) And (b + c > A)
tr_ok = d1 And d2
If tr_ok Then
p = (A + b + c) / 2
s = Sqr(p * (p - A) * (p - b) * (p - c))
s_TextBox.Value = s
MsgBox ("s=" + Str(s))
Else
MsgBox ("Треугольник не существует")
s_TextBox.Value = "Треугольник не существует"
End If
End Sub

Шаг 4

1. Осуществить запуск формы с помощью Run ® Run Sub/UserForm или с помощью кнопки Статья 6 - Картинка 16.

Статья 6 - Картинка 17