Элементы управления и пользовательская форма

Элементы управления

VBA обладает встроенным набором элементов управления. Используя этот набор и редактор форм не трудно создать любой пользовательский интерфейс, который будет удовлетворять всем требованиям, предъявляемым к интерфейсу в среде Windows. В данной главе дан обзор встроенных элементов управления VBA. Элементы управления являются объектами. Поэтому, как любые объекты, они обладают свойствами, методами и событиями. Элементы управления создаются при помощи панели инструментов Элементы управления (Control Toolbox) ( 1). На этой панели представлены кнопки, позволяющие конструировать элементы управления, а также кнопки вызова окна свойств, перехода в режим конструктора и редактор кода.
Создание элементов управления на рабочем листе или в форме как правило происходит на начальном этапе конструирования приложения. Иногда используется программное их создание в процессе работы приложения. Но этот подход применяется реже.
Большинство элементов управления можно располагать как на рабочем листе, так и в форме. Но существуют такие элементы управления, как RefEdit, Набор страниц и Набор вкладок, которые можно располагать только в форме. В табл. 7.1 приведен список основных элементов управления и соответствующих кнопок панели инструментов Элементы управления (Control Toolbox).
Таблица 7.1. Панель инструментов Элементы управления

Для размещения элемента управления на листе или в форме нажмите соответствующую кнопку панели инструментов Элементы управления (Control Toolbox) и с помощью мыши перетащите рамку элемента управления в нужное место. После этого элемент управления можно перемещать, изменять его размеры, копировать в буфер обмена и вставлять из буфера обмена.
Режим конструктора
Для удобства работы с элементами управления в период их конструирования в Excel введен режим конструктора, который активизируется нажатием кнопки
Режим конструктора (Design Mode) панели инструментов Элементы управления (Control Toolbox). В режиме конструктора отключена реакция элемента управления на события. Поэтому при включенном режиме конструктора можно видоизменять элемент управления и задавать его свойства. На  2 показано создание элемента управления CommandButton (кнопка) на рабочем листе. После того как пользователь решит, что созданный элемент управления имеет тот вид, который ему нужен, и все требуемые свойства элемента управления установлены, он должен отключить режим конструктора повторным нажатием кнопки Режим конструктора (Design Mode).
Установка свойств элемента управления
Для установки свойств элемента управления вручную при его конструировании необходимо выделить элемент управления и нажать кнопку Свойства (Properties) панели инструментов Элементы управления (Control
ТоoolBох). На экране отобразится диалоговое окно Свойства (Properties) ( 3). Оно аналогично окну Свойства (Properties) редактора Visual Basic. Вручную при помощи этого окна обычно устанавливается свойство Caption, возвращающее отображаемый текст элемента управления. На  3 значение свойства Caption элемента управление CommandButton изменено с установленного ПО умолчанию (CommandButtonl) на текст Нажми меня. Кроме
того, внесены изменения в параметры свойства Font, устанавливающее шрифт выводимого на поверхности кнопки текста, а именно, увеличен размер шрифта с 8 до 12, шрифт MS sans serif заменен на courier New и изменено начертание букв с обычного на полужирное. Также свойство shadow установлено равным True, вместо False, как это имеет место по умолчанию. Свойство shadow устанавливает, отображается ли элемент управления с тенью или без нее.

Редактор кода
После установки свойств элемента управления или формы переходят к написанию кода, связанного с ними. Особое место в этом коде занимают процедуры обработки событий. У каждого элемента управления есть целый набор событий, обрабатывающих те или иные действия. Приведем некоторые из них:

Код обработки события записывается на листе модуля. Для активизации модуля в том месте, где надо ввести код по обработке события, связанного с выделенным элементом управления, или отредактировать уже написанный код достаточно нажать кнопку Исходный текст (View Code) панели инструментов Элементы управления (Control Toolbox).
Нажатие на кнопку Исходный текст (View Code) активизирует модуль с именем лист1, т. е. модуль, относящийся к рабочему листу, на котором создана кнопка ( 4). Вся рабочая книга, а также каждый рабочий лист, диаграмма или форма имеют связанные с ними модули кода. Кроме того, можно создать модули кода для макросов и модули класса.
В левой верхней части модуля кода находится раскрывающийся список с именами объектов, для которых в данном модуле создаются процедуры обработки событий. В этом списке также представлен раздел модуля Общая часть (General), где описываются переменные и константы уровня модуля.
В правой верхней части модуля кода находится раскрывающийся список с именами событий, связанных с данным объектом.
Составим процедуру обработки события click так, чтобы нажатие на кнопку отображало на экране диалоговое окно, уведомляющее пользователя о случившемся действии (нажатии кнопки) ( 5).
Private Sub CoimiandButtonl_Click ()
MsgBox "Ты нажал на меня"
End Sub
Пользовательская форма UserForm
Пользовательская форма UserForm предоставляет пользователю возможность создавать диалоговые окна разрабатываемых приложений. Она служит базой пользовательского диалогового окна, на которой в зависимости от решаемой задачи размещают требуемые элементы управления.
Семейство userForms является семейством, компоненты которого представляют все загруженные формы UserForm в приложении. Как и все семейства, UserForms имеет свойства count (возвращает число компонентов в семействе) и item (возвращает определенный компонент семейства), а также метод Add (добавляет к семейству новый компонент).
Приведем основные свойства, методы и события пользовательской формы. Наиболее часто используемые свойства объекта UserForm.

Наиболее часто используемые методы объекта UserForm.

 
Семейство Controls
Доступ к семейству всех элементов управления, расположенных в пользовательской форме UserForm, осуществляется с помощью семейства controls. Например, чтобы скрыть все элементы управления формы UserForm, можно использовать код, в котором свойству visible элемента управления, определяющему, отображается ли этот элемент на экране или нет, устанавливается значение False:
For Each Элемент in UserForml.Controls
Элемент.Visible = False Next Control
Создание пользовательской формы
Обсудим процесс создания пользовательской формы на примере конструирования простейшего диалогового окна.

Общие свойства элементов управления
Приведем основные общие свойства элементов управления.

Цвета, устанавливаемые свойствами BackColor, ForeColor и BorderColor, задаются шестнадцатеричными числами. Если эти свойства устанавливать не при помощи окна Свойства (Properties), а программно, вместо этих шестна-дцатеричных чисел удобнее использовать соответствующие постоянные, задающие цвета (табл. 7.2).
Таблица 7.2. Константы, задающие цвет

Соглашения об именах
При создании формы или элемента управления, VBA устанавливает свойство объекта Name (т. е. его имя) по умолчанию. Например, для первой созданной кнопки свойство Name устанавливается равным CommandButtonl, для второй — commandButton2 и т. д. При разработке приложений с одной формой имя объекта, устанавливаемое по умолчанию, обычно не вызывает никаких проблем и в этом случае имена объектов оставляют без изменения. Если приложение обладает сложной структурой и состоит из нескольких форм, будет трудно отличить первую кнопку CommandButtonl первой формы, от первой кнопки CommandButtonl второй формы. В этом случае полезно переименовать объекты так, чтобы они легче различались. Для переименования объектов и переменных в среде Windows существует соглашение об именах, называемое венгерской нотацией. Суть соглашения состоит в следующем: имя объекта начинается с короткого префикса, одинакового для объектов одного и того же рода. За префиксом следует собственно имя, отображающее суть объекта. В табл. 7.3 приведены префиксы и примеры имен управляющих элементов.
Таблица 7.3. Примеры префиксов и имен

 

Общие методы и события элементов управления
Перечислим основные общие методы элементов управления.

Перечислим наиболее часто употребляемые общие события элементов управления.

Рассмотрим синтаксис процедур обработки событий, генерируемых нажатием кнопки мыши и перемещением указателя мыши и связанных с элементами управления (табл. 7.4).
Таблица 7.4. События, связанные с нажатием кнопки мыши
и перемещением мыши

Синтаксис:
Private Sub object_MouseDown( ByVal Button As fmButton,
ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)
Private Sub object_MouseUp( ByVal Button As fmButton,
ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)
Private Sub object_MouseMove( ByVal Button As fmButton,
ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)
Аргументы:

Рассмотрим синтаксис процедур обработки событий при операциях drag-and-drop, связанных с элементами управления (табл. 7.5).
Таблица 7.5. События, связанные с перемещением элемента управления

Синтаксис:
Private Sub object_BeforeDragOver( ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As
DataObject, ByVal X As Single,
ByVal Y As Single,
ByVal DragState As fmDragState,
ByVal Effect As MSForms.ReturnEffect,
ByVal Shift As fmShiftState)
Private Sub
object_BeforeDropOrPaste( ByVal Cancel As MSForms.ReturnBoolean,
ByVal Action As fmAction,
ByVal Data As DataObject,
ByVal X As Single,
ByVal Y As Single,
ByVal Effect As MSForms.ReturnEffeet,
ByVal Shift As fmShiftState)
Аргументы:

 
Объект DataObject
Объект DataObject предназначен для передачи текстовой информации при выполнении операций drag-and-drop между элементами управления. По своему действию объект DataObject в основном аналогичен буферу обмена, но в отличие от него он может хранить только текстовую информацию, которая исчезает при закрытии приложения. Рассмотрим методы объекта DataObject.

Перейдем теперь к обсуждению каждого из элементов управления по отдельности.
Поле
Элемент управления TextBox (поле) создается с помощью кнопки Поле (TextBox) панели элементов управления ( 9). В основном TextBox используется для ввода текста, который в последующем используется в программе, или для вывода результатов расчетов программы. Текст, введенный в поле, обычно в программе преобразуется либо в числа, либо в формулы.
Основные свойства элемента управления TextBox перечислены ниже

Надпись
Элемент управления Label (надпись) создается с помощью кнопки Надпись (Label) панели элементов управления ( 10). В основном Label используется для отображения надписей, например заголовков, не имеющих свойства Caption. Надпись не может быть изменена пользователем, но код программы во время ее выполнения может управлять текстом надписи.
Основные свойства элемента управления Label перечислены ниже

Кнопка
Элемент управления СommandButton (кнопка) создается с помощью кнопки Кнопка (CommandButton) ( 11). Элемент управления CommandButton в основном используется для инициирования выполнения некоторых действий, вызываемых нажатием кнопки, например запуск программы или остановка ее выполнения, печать результатов и т. д.
Приведем наиболее часто используемые свойства элемента управления CommandButton

Список
Элемент управления ListBox (список) создается с помощью кнопки Список (ListBox) ( 12). Элемент управления ListBox применяется для хранения списка значений. Из списка пользователь может выбрать одно или несколько значений, которые в последующем будут использоваться в тексте программы.
Приведем наиболее часто используемые свойства элемента управления ListBox.

Приведем наиболее часто используемые методы элемента управления ListBox

Заполнение списка
Заполнить список можно одним из следующих способов.

Выбор нескольких элементов из списка
Свойство MuitiSelect позволяет устанавливать режим, при котором допустим выбор нескольких элементов из списка. Свойство selected предоставляет возможность проверить, выбран ли элемент с указанным индексом. На  14 показан выбор нескольких элементов из списка. Приведем пример использования этих свойств при вычислении среднего значения выбранных в списке элементов.
With ListBox1
.List = Array(1, 3, 4, 5, 6, 7, 8, 9)
.Listlndex = 0
.MuitiSeiect = fmMultiSelectMulti
Среднее = 0
n = 0
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
n = n + 1
Среднее = Среднее + .List(i)
End IF
Next i
End With
Среднее = Среднее / n
Поле со списком
Элемент управления СотbоВох (поле со списком) создается с помощью кнопки Поле со списком (СотЬоВох) ( 15). Элемент управления СотЬоВох применяется для хранения списка значений. Он сочетает в себе функциональные возможности списка ListBox и поля TextBox. В отличииее от ListBox, в элементе управления СотЬоВох отображается только один элемент списка. Кроме того, у него отсутствует режим выделения нескольких элементов списка, но он позволяет вводить значение, используя поле ввода, как это делает элемент управления TextBox.
Свойства Объекта СотЬоВох, такие как Listlndex, ListCount, Enabled, List и методы clear, Removeitem и Additem аналогичны соответствующим свойствам и методам списка ListBox. Кроме того, у него есть ряд уникальных свойств.
Приведем наиболее употребляемые из уникальных свойств элемента управления СотЬоВох.

 
Полоса прокрутки и счетчик
Элемент управления scrollBar (полоса прокрутки) создается с помощью кнопки Полоса прокрутки (ScrollBar) ( 16).
Приведем наиболее часто используемые свойства элемента управления ScrollBar.

Элемент управления SpinButton (счетчик) создается с помощью кнопки Счетчик (SpinButton) ( 16). Элемент управления SpinButton по своим функциональным возможностям аналогичен полосе прокрутки. Если не быть чрезмерным буквоедом, то можно сказать, что счетчик — это полоса прокрутки без ползунка. Счетчик имеет те же свойства value, Min, мах, Enabled, Visible И SmallChange, что и полоса прокрутки.
Переключатель
Элемент управления ОptionButton (переключатель) создается с помощью кнопки Переключатель (OptionButton) ( 17). Он позволяет выбрать один из нескольких взаимоисключающих параметров или действий. Переключатели обычно отображаются группами, обеспечивая возможность выбора альтернативного варианта.
Приведем наиболее часто используемые свойства элемента управления OptionButton.

Рассмотрим способ использования переключателей на примере классической игры "Орел и Решка". Выбирая один из двух переключателей, игрок загадывает один из вариантов: орел (Г для компьютера) или решка (0 для компьютера). Не зная о выборе игрока, компьютер синтезирует с раиной вероятностью либо 0, либо 1, что моделирует бросание монеты. Если игрок угадал правильную сторону монеты, подброшенную компьютером, то он выигрывает. В противном случае выигрывает компьютер. Компьютер информирует игрока о результате игры. На  18 приведено диалоговое окно, отображаемое на экране в случае проигрыша игрока.
Для создания приложения, моделирующего игру "Орел и Решка", с помощью пользовательской формы userForm1 создадим диалоговое окно, показанное на  19, а в модуле UserForm1 введем следующую процедуру, синтезирующую отклик на нажатие кнопки Бросание монеты.
Private Sub CommandButtonl_Click ()
' Генерация с равной вероятностью либо 0 (решка), либо 1 (орел),
' т. е. моделирование бросания монеты '
Randomize
Монета = Int(2 * Rnd)
' Сравнение результата бросания монеты компьютером ' с ситуацией, если игрок загадал "Орел"
If OptionButtonl.Value = True Then
If Монета = 0 Then MsgBox "He везет. Займись-ка лучше изучением VBA"
If Монета = 1 Then MsgBox "Везунчик. Поздравляю, ты выиграл."
End If
'
' Сравнение результата бросания монеты компьютером
' с ситуацией, если игрок загадал "Решка"
'
If OptionButton2.Value = True Then
If Монета = 1 Then MsgBox "He везет. Займись-ка лучше изучением VBA"
If Монета = 0 Then MsgBox "Везунчик. Поздравляю, ты выиграл"
End If
End Sub
Рамка
Элемент управления Frame (рамка) создается с помощью кнопки Рамка (Frame) ( 20). Он используется для визуальной группировки элементов управления. Основным свойством рамки является Capture, отображающее надпись рамки.
Флажок и выключатель
Элемент управления checkBox (флажок) создается с помощью кнопки Флажок (Checkbox) ( 21). Этот элемент управления предоставляет пользователю возможность выбора. Флажок обычно имеет два состояния: установленное и сброшенное, но может настраиваться на выбор из трех альтернатив. Флажок имеет те же свойства value, Enabled, visible и Capture, что и переключатель. Кроме того, флажок обладает уникальным свойством Triplestate, позволяющим производить выбор из трех альтернатив. Свойство Triplestate может принимать два значения: False (выбор из двух альтернатив .True и False) и True (выбор из трех альтернатив True, False и Null).
Элемент управления ToggieButton (выключатель) создается с помощью кнопки Выключатель (ToggieButton) ( 21). Этот элемент управления предоставляет пользователю те же возможности, что и флажок.
На  22 дан пример, показывающий, как визуально отличаются друг от друга три допустимых состояния выключателя и флажка. Программно этот пример реализуется при помощи следующей процедуры.
Private Sub UserForm_Initialize()
' Выключатели
ToggleButtonl.Value = True
ToggleButton2.Value = False
ToggleButton3.TripleState = True
ToggleButton3.Value = Null
'
' Флажки
CheckBoxl.Value = True
CheckBox2.Value = False
CheckBox3.TripleState = True
CheckBox3.Value = Null
End Sub
Рисунок
Элемент управления image (рисунок) создается с помощью кнопки Рисунок (Image). Он используется для отображения графических файлов в формате bmp, cur, gif, ico, jpg и wmf. Перечислим некоторые из его свойств, используемых для управления выводом изображения.

Приведем пример размещения рисунка в объекте ( 24). Во всех четырех случаях рисунок выравнивается по верхнему левому краю объекта. В первом случае изображение пропорционально масштабируется так, чтобы целиком заполнить область объекта. Во втором случае масштабирование непропорциональное, в третьем рисунок размещается произвольно, в четвертом область объекта покрывается мозаикой из рисунков.
Private Sub UserForm_Initialize() With Imagel
.PictureAlignment = fmPictureAlignmentTopLeft
.PictureSizeMode = fmPictureSizeModeZoom
.Picture = LoadPicture("c:\Face.bmp")
End With
With Image 2
.PictureAlignment = fmPictureAlignmentTopLeft
.PictureSizeMode = fmPictureSizeModeStretch
.Picture = LoadPicture("c:\Face.bmp") End With '
With Image2
.PictureAlignment = fmPictureAlignmentTopLeft
.PictureSizeMode = fmPictureSizeModeStretch
.Picture = LoadPicture("c:\Face.bmp")
End With
With Image3
.PictureAlignment = fmPictureAlignmentTopLeft
.PictureSizeMode = fmPictureSizeModeClip
.Picture = LoadPicture("c:\Face.bmp")
End With
With Image4
.PictureAlignment = fmPictureAlignmentTopLeft
.PictureTiling = True
.Picture = LoadPicturet"c:\Face.bmp")
End With
End Sub
Ссылки на ячейки и диапазоны
Элемент управления RefEdit (редактирование ссылок) создается с помощью кнопки RefEdit ( 24). Элемент управления RefEdit обычно используется для ввода ссылок на ячейки или диапазоны. Основным свойством элемента управления RefEdit является Text, возвращающее строку, введенную в поле ввода этого элемента управления.
Набор страниц
Элемент управления MultiPage (набор страниц) создается с помощью кнопки Набор страниц (MultiPage) ( 25). Этот элемент управления реализует многостраничные диалоговые окна. Заголовки страниц отображаются на вкладках. Переход от страницы к странице осуществляется выбором вкладки посредством щелчка кнопкой мыши.
Создать, переименовать, удалить или переместить страницу элемента управления MultiPage можно вручную, выбрав ярлык соответствующего листа и вызвав щелчком правой кнопки мыши контекстное меню. Используя это контекстное меню, можно произвести одно из перечисленных действий.
Объект MultiPage содержит в себе семейство Pages, являющееся набором всех страниц, входящих в этот объект.
Перечислим свойства объекта MultiPage.

Семейство Pages, содержащее все страницы, входящие в объект MultiPage, имеет единственное свойство count, возвращающее число элементов семейства. Кроме того, у семейства Pages имеются следующие методы.

Набор вкладок
Элемент управления Tabstrip (набор вкладок) создается с помощью кнопки Набор вкладок (TabStrip) ( 26). Он позволяет создать несколько вкладок в диалоговом окне. Объект TabStrip содержит в себе семейство Tabs, представляющее собой набор всех вкладок. Объект Tabstrip и семейство таБз обладают теми же свойствами и методами, что и объект MuitiPage и семейство Pages .
Дополнительные элементы управления
В VBA, кроме перечисленных стандартных элементов управления, имеется ряд дополнительных. Дополнительные элементы управления являются самостоятельными объектами, обладающие как общими для всех элементов управления свойствами и методами, так и присущими только им свойствами и методами. Для добавления дополнительных элементов управления на панель элементов необходимо:

  1. Выбрать команду Сервис, Дополнительные элементы (Tools, Additional Controls).
  2. В появившемся на экране окне Дополнительные элементы (Additional Controls) ( 27) в списке Доступные элементы (Available Controls) установить флажок напротив добавляемого элемента.
  3. Нажать кнопку ОК.

Удаление ненужного элемента управления из панели элементов почти аналогично добавлению, а именно, надо:

  1. Выбрать команду Сервис, Дополнительные элементы (Tools, Additional Controls).
  2. В появившемся на экране окне Дополнительные элементы (Additional Controls) ( 27) в списке Доступные элементы (Available Controls) снять флажок напротив удаляемого элемента.
  3. Нажать кнопку ОК.

Среди дополнительных элементов управления очень полезным является элемент управления Calendar (календарь) ( 28). Этот объект представляет средство для организации удобного интерфейса по вводу дат. Элемент управления конструируется в форме с помощью кнопки Календарь (Calendar)
Перечислим основные свойства элемента управления calendar.

Перечислим основные методы элемента управления calendar.

В качестве примера использования календаря приведем следующую процедуру, которая считывает из календаря выбранную дату и вводит ее в ячейку рабочего листа:
Private Sub Calendarl_Click()
Cells (1, 1).Value = Calendar1.Value
End Sub
Последовательность выбора элементов управления
Последовательность перехода от одного элемента управления к другому определяет порядок, в соответствии с которым активизируются эти элементы управления при нажатии клавиши <Таb>. Для установки последовательности перехода в пользовательской форме необходимо:

  1. Находясь в редакторе Visual Basic выбрать команду Вид, Последовательность перехода (View, Tab Order).
  2. В появившемся диалоговом окне Последовательность перехода (Tab Order) с помощью клавиш Вниз (Move Down) и Вверх (Move Up) изменить порядок выделенного элемента управления в зависимости от потребности ( 29).

Последовательность перехода
Другим способом задания последовательности перехода является определение свойства TabIndex элемента управления. При этом надо помнить, что начальному элементу соответствует значение свойства Tabindex, равное 0, второму — 1, третьему — 2 и т. д.
Инициализация и отображение диалогового окна
Инициализировать и отобразить диалоговое окно на экране очень просто. Инициализация производится при помощи процедуры обработки события Initilize формы userForm. Отображение диалогового окна на экране осуществляется методом show. Инструкцию с методом show обычно помещают в процедуру, которая связана с командой пользовательского меню, кнопкой панели инструментов или элементом управления, как правило кнопкой диалогового окна.
Простой инициализации или обычного отображения диалогового окна часто бывает недостаточно, т. к. это приводит к появлению на экране функционально ненастроенного диалогового окна. Такое диалоговое окно можно сравнить с каркасом дома. В таком доме жить неприятно и в него совсем не хочется въезжать. Для того чтобы жить в доме было приятно и удобно, прежде чем в него вселяться, надо сделать много отделочных работ. Также и при инициализации диалогового окна необходимо предусмотреть огромное количество на первый взгляд мелочей, но без которых работать с диалоговым окном неудобно. В частности, при отображении диалогового окна на-экране необходимо установить значения полей, применяемые по умолчанию, задать функции кнопок, назначить им комбинации клавиш, связать с элементами управления всплывающие подсказки, вывести в списках первоначально выводимые элементы списщв, задать первоначальную установку флажков, переключателей, вывести в элементы управления формы требуемые рисунки и т. д.
Приведем пример процедуры инициализации диалогового окна ( 30), в котором рассчитываются размеры периодических выплат при постоянной процентной ставке.
Private Sub UserForeinitialize ()
' Процедура инициализации и активизации диалогового окна
'
'
' Первоначальный выбор переключателя Гистограмма
'
OptionButtonl. Value = True
' Назначение клавише <Enter> функции кнопки Вычислить
With CommandButtonl
.Default = True
.ControlTipText = "Вычисление процентных ставок" & Chr(13) &
"составление отчета на рабочем листе" End With
CommandButton2.ControlTipText = "Кнопка отмены"
'
'
On Error GoTo СообщениеО With Imagel
'
' Установка такого же цвета границы элемента управления Рисунок,
' как и его фон
.BorderColor = .BackColor
'
'
' Загрузка рисунка, соответствующего переключателю Гистограмма '
.Picture = LoadPicture("VBA3_F1.BMP")
End With
'
UserForml.Show
Exit Sub
'
' В случае отсутствия файла с рисунком отображается сообщение
'
Сообщение0:
If Err.Number Then
MsgBox "Нет графического файла VBA3_F1.BMP." & Chr(13) &
"Работаем без картинки", vbCritical, "Выплаты"
End If
'
Resume Next
End Sub
Закрытие диалогового окна
В VBA диалоговые окна работают в режиме модального диалога. Это означает, что пользователь, прежде чем перейти к выполнению действий, не связанных с текущим активным диалоговым окном, должен его закрыть. Закрытие диалогового окна производится методом Hide. Следующая процедура является примером процедуры закрытия диалогового окна. Эта процедура активизируется при нажатии кнопки CommandButton2 диалогового окна UserForm1 и выполняет только одну инструкцию, осуществляющую закрытие этого диалогового окна.
Private Sub CommandButton2_Click() '
' Процедура закрытия диалогового окна '
UserForm1.Hide
End Sub
Закрыть диалоговое окно также, конечно, можно, нажав системную кнопку, расположенную в правом верхнем углу любого диалогового окна. Если при закрытии диалогового окна необходимо произвести какие-то действия, например считать информацию из окна в файл на диске и т. д., во избежание потери информации, действия, производимые программой при закрытии окна, разумно также продублировать в процедуре обработки события Terminate (закрытие) пользовательской формы.
Отображение встроенных диалоговых окон
VBA позволяет отображать программно на экране встроенные диалоговые окна в Excel наряду с пользовательскими диалоговыми окнами. Все встроенные диалоговые окна в Excel образуют семейство Dialogs, индекс которого специфицирует активизируемое диалоговое окно. Отображение встроенного диалогового окна на экране осуществляется методом show. Например, следующая процедура при нажатии кнопки активизирует диалоговое окно Открытие документа (Open) ( 31).
Private Sub CommandButtonl_Click()
Application.Dialogs(xlDialogOpen).Show
End Sub
В методе show можно указывать аргументы, управляющие выводом в диалоговом окне специфицированной информации.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г. Яндекс.Метрика