Сделай Сам Свою Работу на 5

Пользовательские формы в программах на vba





Цель работы –Изучение возможностей построения интерфейса программ на VBA с применением пользовательских форм.

Создание пользовательской формы в Excel

Пользовательская форма – диалоговое окно, в котором можно размещать элементы управления. Пользовательская форма позволяет создавать желаемый интерфейс, не ограничиваясь возможностями стандартного интерфейса Excel или других программ.

Чтобы создать пользовательскую форму в среде Excel и сделать ее работоспособной, требуется выполнить следующее:

- выбрать команду Сервис – Макрос – Редактор Visual Basic;

- в среде программирования Visual Basic выбрать команду Insert – UserForm. Создается пользовательская форма, т.е. пустое окно, где можно размещать элементы управления;

- вызвать на экран панель элементов управления (если она не вызвана автоматически). Для этого выбрать команду View – Toolbox (в других версиях – View – Controls);

- разместить в окне пользовательской формы желаемые элементы управления;

- вызвать на экран меню свойств элементов управления (меню Properties), если оно не вызвано автоматически. Для этого выбрать команду View – Properties Window;

- используя меню свойств элементов управления, установить желаемые свойства пользовательской формы или размещенных на ней элементов управления. Для этого выбрать из списка в верхней части меню Properties желаемый элемент управления или пользовательскую форму (UserForm); после этого установить желаемые свойства;



- разработать программу на языке VBA для работы с пользовательской формой. Для этого выбрать команду View – Code. Вызывается редактор VBA, и открывается модуль пользовательской формы. В нем следует ввести текст программы для обработки событий, связанных с пользовательской формой (инициализация пользовательской формы, нажатие кнопок и т.д.);

- вернуться из режима разработки программы в режим работы с окном пользовательской формы. Для этого убедиться, что в окне проекта (в левой части экрана) выбрана отметка пользовательской формы, и выбрать команду View – Object;

- для начала работы с пользовательской формой (т.е. для ее “запуска”) выбрать команду Run/Run Sub/UserForm.

Рассмотрим примеры разработки программ с пользовательскими формами, содержащими различные элементы управления.



Кнопки, текстовые поля, списки

Пример 7.1 –Требуется разработать пользовательскую форму (см. рисунок 7.1), которая будет запрашивать у пользователя диапазон ячеек рабочего листа Excel (левый верхний и правый нижний угол) и вычислять, по выбору пользователя, сумму или произведение чисел в ячейках этого диапазона. Для ввода границ диапазона (т.е. левого верхнего и правого нижнего угла) и для вывода результата (суммы или произведения) должны использоваться текстовые поля пользовательской формы. Для выбора операции (сумма или произведение) должен использоваться список. Вычисление должно выполняться при нажатии кнопки, размещенной на пользовательской форме. Кроме того, требуется создать кнопку для закрытия пользовательской формы.

Создание элементов управления и указание их свойств

Требуется создать пользовательскую форму, как показано в подразделе 7.1. В ее окне требуется разместить элементы управления: три надписи (Label), три текстовых поля (TextBox), раскрывающийся список (ComboBox), две кнопки (CommandButton). В результате окно пользовательской формы должно иметь примерно такой вид, как показано на рисунке 7.2.

Рисунок 7.1 – Пользовательская форма (пример 7.1) во время работы программы Рисунок 7.2 – Пользовательская форма (пример 7.1) в режиме редактирования

Чтобы форма имела такой вид, как показано на рисунке 7.2, требуется с помощью меню Properties задать для нее следующие свойства:

- форма в целом (UserForm): Name – Sum_proizv (имя формы, используемое для ссылок на нее); Caption – Вычисления (заголовок формы);



- надписи: для первой надписи (на рисунке 7.2 – верхняя) указать свойство Caption – Левый верхний. Для второй надписи указать свойство Caption – Правый нижний, для третьей указать Caption – Результат;

- текстовые поля: для верхнего поля указать свойство Name – Nach, для следующего – Kon, для третьего – Rez;

- раскрывающийся список: Name – Operacii;

- кнопка для вычисления: Name – Schet, Caption – Вычислить;

- кнопка для закрытия формы: Name – Vyhod, Caption – Выход.

Примечание – Некоторые другие свойства элементов формы (например, перечень элементов списка и номер его текущего элемента) будут заданы в программе для работы с формой.

Разработка программы

Чтобы приступить к написанию программы для работы с созданной пользовательской формой, требуется после создания формы, приведенной на рисунке 7.2, выбрать команду View – Code. Вызывается редактор VBA, и открывается модуль пользовательской формы. В нем необходимо ввести следующий текст программы (некоторые заголовки подпрограмм будут созданы автоматически):

Private Sub UserForm_Initialize()

Operacii.AddItem "сумма"

Operacii.AddItem "произведение"

Operacii.ListIndex = 0

End Sub

Private Sub Schet_Click()

diap = Nach.Value + ":" + Kon.Value

Set d = Range(diap)

m = d.Rows.Count

n = d.Columns.Count

If Operacii.ListIndex = 0 Then

Sum = 0

For i = 1 To m

For j = 1 To n

Sum = Sum + d.Cells(i, j).Value

Next j

Next i

Rez.Value = Sum

End If

If Operacii.ListIndex = 1 Then

proizv = 1

For i = 1 To m

For j = 1 To n

proizv = proizv * d.Cells(i, j).Value

Next j

Next i

rez.Value = proizv

End If

End Sub

 

Private Sub Vyhod_click()

Unload Sum_proizv

End Sub

 

Процедура UserForm_Initialize() выполняется в начале работы с пользовательской формой, т.е. выполняет ее инициализацию. Оператор Operacii.AddItem "сумма" означает, что к списку Operacii применяется действие (метод) AddItem, т.е. к списку добавляется заданный элемент – слово “сумма”. Затем в список аналогично включается элемент “произведение”. В операторе operacii.ListIndex = 0 свойству ListIndex списка Operacii присваивается значение 0; это означает, что по умолчанию в списке будет выбран первый по порядку элемент, т.е. элемент “сумма” (элементы списка имеют номера, начиная с нуля).

Процедура Schet_Click() выполняется при нажатии кнопки с именем Schet (т.е. кнопки Вычислить). В операторе diap = Nach.Value + ":" + Kon.Value составляется символьная строка из значений текстовых полей Nach и Kon, между которыми добавляется двоеточие; таким образом, строка diap будет представлять собой диапазон ячеек, заданный в текстовых полях. Например, если в текстовом поле Nachпользователь введет значение B2, а в текстовом поле Kon– значение F4, то переменная diap будет иметь значение “B2:F4”.

В операторе Set d = Range(diap) переменная d связывается с диапазоном, заданным переменной diap. В двух следующих операторах определяется количество строк и столбцов в заданном диапазоне.

В операторе If Operacii.ListIndex = 0 Then … проверяется, чему равно свойство ListIndex списка Operacii, т.е. какой элемент выбран в списке Operacii. Если выбран элемент с номером 0 (т.е. первый элемент – “сумма”), то выполняется суммирование значений ячеек в заданном диапазоне. Результат вычислений (переменная Sum) выводится в текстовое поле Rez:для этого выполняется присваивание Rez.Value = Sum.

Аналогично, если выбран элемент списка с номером 1 (“произведение”), то вычисляется произведение ячеек в заданном диапазоне, и результат выводится в текстовое поле Rez.

Процедура Vyhod_click() выполняется при нажатии кнопки с именем Vyhod (т.е. кнопки Выход). Оператор Unload Sum_proizv закрывает форму.

Флажки, счетчики

Пример 7.2 –Требуется разработать пользовательскую форму (см. рисунок 7.3) для возведения чисел в заданную степень и для извлечения корней заданной степени (или для выполнения обеих этих операций). Для ввода числа, которое требуется возвести в степень (извлечь из него корень), должно использоваться текстовое поле. Показатель степени (для возведения или извлечения корня) задается с помощью счетчика. Для выбора операции (возведение в степень или извлечение корня) используются флажки. Результаты должны выводиться в текстовые поля. Вычисление должно выполняться при нажатии кнопки, размещенной на пользовательской форме. Кроме того, требуется создать кнопку для закрытия пользовательской формы.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.