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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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