ПОЛЬЗОВАТЕЛЬСКАЯ ФОРМА USERFORM
Пользовательская форма UserForm дает возможность пользователю создавать диалоговые окна разрабатываемых приложений. В пользовательском диалоговом окне в зависимости от решаемой задачи размещают требуемые элементы управления.
Семейство UserForms является семейством, компоненты которого представляют все загруженные формы, и имеет свойства
Count (возвращает число компонентов в семействе) и Item (возвращает определенный компонент семейства).
В табл. 5.7.3 приведены основные свойства, методы и события пользовательской формы.
Таблица 5.7.3
Наиболее часто используемые свойства объекта UserForm
Название свойства | Действие |
Свойства | |
Name | Возвращает имя пользовательской формы |
Caption | Возвращает текст, отображаемый в строке заголовка формы |
BackCoIor | Возвращает цвет фона формы |
BorderStyIe | Устанавливает тип границы |
Picture | Указывает рисунок, отображаемый как фон формы |
Left и Top | Возвращают местоположение верхнего левого угла формы в пунктах |
Height и Width | Возвращают высоту и ширину формы в пунктах |
Методы | |
Show | Отображает форму на экране |
Hide | Закрывает форму |
События | |
Initialize | Происходит при отображении формы на экране |
Terminate | Происходит при закрытии формы |
Для активизации диалогового окна создается процедура инициализации формы.
В программном модуле формы содержатся действия, связанные с необходимой инициализацией элементов управления, расположенных в форме.Создание пользовательской формы. Рассмотрим простой пример использования пользовательской формы при создании приложения, моделирующего игру «Орел и решка».
Для создания пользовательской формы в редакторе VBA нужно выбрать команду Insert UserForm (рис. 5.7.2). Затем, используя окно «Свойства» и панель элементов, создадим диалоговое окно, изображенное на рис. 5.7.3. Расположим на форме кнопку и переключатели.
Используя окно «Свойства», установите свойства формы. Например, в свойство «Caption» введите текст «игра орел-решка».
Для введения кода программы нужно сделать двойной щелчок на кнопке для открытия окна кода. Введите код:
Рис. 5.7. 2. Окно редактирования VBA с пользовательской формой и панелью элементов управления
Рис. 5.7.3. Диалоговое окно игры «Орел-решка»
Private Sub CommandButtonl_Click()
/
'Моделирование бросания монеты с равной вероятностью
' О - решка, 1 - орел #
Randomize
Монета = Int(2 * Rnd)
/
'Сравнение результата бросания монеты компьютером ' с ситуацией, когда игрок загадал "орел"
If OptionButtonl.Value = True Then If Монета = 0 Then MsgBox "He угадал!"
If Монета = I Then MsgBox "Победа!"
End If /
'Сравнение результата бросания монеты компьютером ' с ситуацией, когда игрок загадал "решка"
г
If OptionButton2.Value = True Then If Монета = I Then MsgBox "He угадал!"
If Монета = O Then MsgBox "Победа!"
End If End Sub
Для запуска приложения достаточно нажать кнопку «Запуск» подпрограммы (Sub)/UserForm или клавишу «F5». Откроется окно (см. рис. 5.7.3), далее нужно выбрать переключатель и в зависимости от результата функция MsgBox выведет сообщения «Победа» или «Не угадал».
На примере расчета маргинальной ставки1 сконструируем приложение, позволяющее углубить знания по созданию и работе диалогового окна.
Диалоговое окно для расчета маргинальной ставки представлено на рис. 5.7.4. Здесь использованы элементы управления «Поле», «Надпись», «Кнопка».
Рис. 5.7.4. Диалоговое окно расчета маргинальной ставки
1 Маргинальной процентной ставкой является максимальная процентная ставка, при которой предлагаемая сделка более выгодна, чем просто положить деньги в банк.
Исходными данными, вводимыми пользователем, являются: число выплат, размер ссуды, размер одной выплаты, процентная ставка.
Текущий объем вклада на основе постоянных периодических платежей вычисляется с помощью финансовой функции рабочего листа ПЗ (PV).
Для написания нижеследующего кода программы, связанного с формой, следует сделать двойной щелчок на кнопке «Вычислить». Откроется окно редактора кода. В окне кода появятся первая и последняя инструкции процедуры. Остальные операторы пользователь вводит самостоятельно. Строки кода, начинающиеся с апострофа, являются комментариями.
Private Sub CoiranandButtonl_Click()
#
7Процедура расчета маргинальной процентной ставки /
Dim і As Double Dim p As Double Dim A As Double Dim iMarg As Double Dim pPure As Double
Dim n As Integer /
'n - число выплат 'p - размер ссуды ' а - размер одной выплаты 'і - процентная ставка 'pPure - текущий объем ссуды,
'iMarg — маргинальная процентная ставка
'Проверка того, что введенные
'в диалоговое окно данные являются числами /
If IsNumeric(TextBoxl.Text) = False Then MsgBox "Ошибка в числе выплат", vdInformation,_ "Маргинальная ставка"
TextBoxl.SetFocus Exit Sub End If
If IsNumeric(TextBox2.Text) = False Then MsgBox "Ошибка в размере ссуды", _ vdlnformation, "Маргинальная ставка"
TextBox2.SetFocus Exit Sub End If
/
If IsNumeric(UserForm2.TextBox3.Text) = False Then MsgBox "Ошибка в размере одной выплаты", _ vdlnformation, "Маргинальная ставка"
TextBox3.SetFocus Exit Sub End If
/
If IsNumeric(TextBox4.Text) = False Then MsgBox "Ошибка в процентной ставке", _ vdlnformation, "Маргинальная ставка"
TextBox4.SetFocus Exit Sub End If
/
'Ввод данных в переменные из диалогового окна /
n = CInt(TextBoxl.Text) р = CDbl(TextBox2.Text)
A = CInt(TextВохЗ.Text) і = CInt(TextBox4.Text) / 100
I
'Проверка согласованности ввода данных /
If η * А < р Then
MsgBox "Возвращается на" & CStr(Format(р — η * А, "Fixed")) Sc.
"меньше размера ссуды", _ vdExclamation, "Маргинальная ставка"
TextBoxl.SetFocus Exit Sub End If
'Изменение ширины столбцов и задание режима ввода
'текста с переносом /
ActiveSheet.
Columns ("A:А#/). Select With Selection .ColumnWidth = 20 .WrapText = True End WithActiveSheet.Columns ("B:B"). Select
Selection.ColumnWidth = 12 /
'Выбор ячейки B2 для того, чтобы снять выделение со столбца В
I
ActiveSheet.Range("В2").Select #
'Ввод названий записей на рабочем листе /
With ActiveSheet
.Range("А2").Value = "Число выплат"
.Range("АЗ").Value = "Размер ссуды"
.Range("А4").Value = "Размер одной выплаты"
.Range("А5").Value = "Процентная ставка"
.Range("А6").Value = "Текущий объем ссуды"
.Range("А7") .Value = "Маргинальная процентная ставка"
.Range("А8").Value = "Маргинальный чистый текущий объем ссуды"
.Range("В8").Activate
End With /
'Расчет чистого текущего объема ссуды
г
pPure = Application.PV(і, n, -А)
t
'Нахождение маргинальной процентной ставки 'с помощью команды Подбор параметра.
'Ввод данных в ячейки активного рабочего листа
'и задание процентного денежного формата в ячейках /
With ActiveSheet .Range("В2").Value = η
.Range("ВЗ").NumberFormat . Range("ВЗ").Value = р . Range ("В4").NumberFormat . Range ("В4").Value = А .Range ("В5").NumberFormat .Range("В5").Value = і .Range ("В7").NumberFormat •Range("В7").Value = і
"0.00%"
"0.00%"
'Ввод формулы расчета
. Range ("В8").FormulaLocal = "=ПЗ(В7;В2;-В4)" .Range("Вб").Value = . Range ("В8").Value
'Выполнение команды Подбор параметра /
.Range ("В8").GoalSeek Goal:=р, ChangingCell: =.Range ("В7")
/
'Присвоение найденного значения маргинальной процентной ставки
'переменной iMarg /
iMarg = .Range ("В7").Value End With 'Переформатирование найденных значений
'и вывод их в диалоговом окне /
TextBoxS.Text = CStr(Format(pPure, "Fixed"))
TextBox6.Text = CStr(Format(iMarg * 100, "Fixed")) /
End Sub
Private Sub CommandButton2_Click()
/
'Процедура закрытия диалогового окна /
UserForm2.Hide
End Sub
'Процедура вызова диалогового окна.
'Поля
"'Чистый текущий объем ссуды"
'и
'"Маргинальная процентная ставка"
'доступны для вывода информации, но не для ее ввода /
TextBox5.Enabled = False
TextBox6.Enabled = False /
'Клавише назначена функция кнопки Вычислить
'Кнопке Вычислить назначен текст всплывающей подсказки $
With CommandButtonl .Default = True
.ControlTipText = "Расчет и составление отчета на рабочем листе"
End With /
'Клавише назначена функция кнопки Отмена
'Кнопке Отмена назначен текст всплывающей подсказки /
With CommandButton2 .Cancel = True
.ControlTipText = "Кнопка отмены"
End With /
UserForml. Show /
End Sub
Ключевые понятия
Инструкция Событие
Метод Тип данных
Объект Форма
Оператор Элементы управления
Свойство VBA
Вопросы для самоконтроля
1. Какие типы операций существуют в VBА?
2. Для чего нужно описание переменных?
3. Какие объекты существуют в Excel?
4. Как устанавливаются свойства объектов?
5. Какая процедура активизирует форму?
6. Какими свойствами обладает пользовательская форма?
Задания для самостоятельной работы
1. В окне редактора VBA создайте приложение расчета маргинальной ставки, вводя данные: число выплат, размер ссуды, размер одной выплаты. Получите результаты.
2. Разработайте приложение с диалоговым окном для решения квадратного уравнения. В приложении предусмотрите ввод коэффициентов уравнения, вывод корней уравнения или сообщение об отсутствии корней.
Список РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
1. Новиков ФЯценко A. Microsoft® Office XP в целом. — СПб.: БХВ - Петербург, 2002. - С. 661-729.
2. Информатика: Учебник / Под ред. Н.В. Макаровой. — M.: Финансы и статистика, 2000. — С. 688—720.
3. Король В.И. Visual Basic for Application 6.0: Справочник с примерами. — M.: Кудиц-Образ, 2000. — С. 10—18.
Еще по теме ПОЛЬЗОВАТЕЛЬСКАЯ ФОРМА USERFORM:
- Содержание, порядок составления и значение бухгалтерских отчетов «Отчет об изменениях капитала» (форма № 3) и «Приложение к бухгалтерскому балансу» (форма №5). Взаимоувязка их данных с данными бухгалтерского баланса (форма № 1).
- Учет нераспределенной прибыли (непокрытого убытка) отчетного года и прошлых лет. Порядок их отражения в бухгалтерском балансе (форма №1) и отчете об изменении капитала (форма №3).
- Учет резервного и добавочного капитала. Взаимоувязка информации о них в бухгалтерском балансе (форма № 1) и отчете об изменениях капитала (форма № 3).
- АККРЕДИТИВНАЯ ФОРМА РАСЧЕТОВ
- Форма выпуска ценных бумаг
- 4.7. Автоматизированная форма бухгалтерского учета
- Form W-8 (Форма W-8)
- Современная форма баланса
- ОРГАНИЗАЦИОННО-ПРАВОВАЯ ФОРМА
- Аккредитивная форма расчетов.
- 3.5, Форма журнал-Главная
- Форма удостоверения прав по ценным бумагам
- Чековая форма расчетов
- Форма №3. Отчет об изменениях капитала.
- Наличная форма выпуска ценных бумаг
- Документарная форма эмиссионных ценных бумаг
- Ценные бумаги эмиссионные, документарная форма