Элемент управления RefEdit (Поле со свёртыванием)
Элемент управления RefEdit (Поле со свёртыванием) аналогичен полю ввода, но позволяет вводить в него ссылку на диапазон выбором на рабочем листе. Свойство Value возвращает эту ссылку.
В качестве примера[1] использования элемента управления RefEdit используем проект, определяющий некоторые статистические параметры диапазона, а именно максимальное, минимальное значения и сумму всех значений ячеек этого диапазона. Создаётся форма, на которой расположены две кнопки: CommandButton1 и CommandButton2 и элемент управления RefEdit (рис. 30). Кнопка CommandButton1 предназначена для задания значения диапазона элемента управления RefEdit, а кнопка CommandButton2 – для выгрузки формы. Форма, приведённая на рис. 31, загружается при выполнении процедуры СТАТИСТИКА2:
Sub СТАТИСТИКА2()
СТАТИСТИКА.Show
End Sub
находящейся в стандартном модуле Module1.
Рис. 28. Проект формы Рис.29. Загруженная форма
Для задания диапазона необходимо сделать активным окно элемента управления RefEdit и выделить нужный диапазон Лист1!$A$14:$A$17
(рис. 30). При выделении диапазона размер формы уменьшается, открывая ячейки для его выделения. Отсюда название элемента “Поле со свёртыванием”.
Рис. 30. Выделение диапазона
При нажатии на кнопку ok выполняется следующая процедура модуля формы.
Private Sub CommandButton1_Click()
Dim r As String
Dim min As Double, max As Double, s As Double
r = RefEdit1.Value
Dim rgn As Range
Set rgn = Range
min = WorksheetFunction.min(rgn)
max = WorksheetFunction.max(rgn)
s = WorksheetFunction.Sum(rgn)
MsgBox RefEdit1.Value & vbCr & _
“min=” & min & vbCr & _
“max=” & max & vbCr & _
“s=” & s
End Sub
В этой процедуре инструкция r = RefEdit1.Value присваивает переменной r значение ссылки на диапазон, инструкция Dim rgn As Range объявляет переменную rgn как объект Range, а инструкция Set rgn = Range присваивает значение ячеек выбранного диапазона переменной rgn.
Значения свойства Caption формы (Статистика), кнопки CommandButton1 (ok) и кнопки CommandButton2 (Выйти) задаются при инициализации следующей процедуры модуля формы:
Private Sub UserForm_initialize()
Me.Caption = “Статистика”
CommandButton1.Caption = “ok”
CommandButton2.Caption = “Выйти”
End Sub
Удаление формы из памяти осуществляется при нажатии кнопки “Выйти”. При этом возникает событие Click, обрабатываемого следующей процедурой формы:
Private Sub CommandButton2_Click()
Unload Me
End Sub
При использовании данного приложения действия производятся в следующем порядке.
1. Запускается (пользователем или программно) процедура СТАТИСТИКА2.
2. Эта процедура загружает форму СТАТИСТИКА, при инициализации которой выполняется процедура UserForm_initialize.
3. Пользователь выделяет на рабочем листе диапазон значений, на который ссылается элемент управления RefEdit.
4. При нажатии на кнопку ok вызывается процедура CommandButton1_Click, в результате выполнения которой осуществляется подсчёт минимума, максимума и суммы величин выбранного диапазона при помощи свойств Min, Max и Sum объекта WorksheetFunction, представляющие собой одноименные функции рабочего листа и которые выводятся на экран при помощи функции MsgBox (рис. 33).
Рис. 31. Результаты выполнения приложения СТАТИСТИКА
5. При нажатии на кнопку Выйти выполняется процедура CommandButton2_Click,в результате чего форма СТАТИСТИКА выгружается.