- Событие ListBox.Exit (Доступ)
- Синтаксис
- Параметры
- Примечания
- Пример
- Поддержка и обратная связь
- Примеры использования элемента управления ListBox
- Добавление опций в элемент управления ListBox
- Добавление опций в элемент управления ListBox на этапе разработки
- Добавление опций в элемент управления ListBox на этапе выполнения
- Событие TextBox.Exit (Доступ)
- Синтаксис
- Параметры
- Заметки
- Пример
- Поддержка и обратная связь
Событие ListBox.Exit (Доступ)
Событие Exit происходит незадолго до того, как управление теряет фокус на другом контроле в той же форме или отчете.
Синтаксис
выражения. Exit (Отмена)
выражение Переменная, представляющие объект ListBox.
Параметры
| Имя | Обязательный или необязательный | Тип данных | Описание |
|---|---|---|---|
| Отмена | Обязательный | Integer | Установите для True отмену события. |
Примечания
Это событие не применяется к флажкам, кнопкам параметра или кнопкам торгле в группе опций. Оно применяется только к самой группе опций.
Чтобы запустить процедуру макроса или события, когда это событие произойдет, установите свойство OnExit имя макроса или [Event Procedure].
Так как событие Enter происходит до того, как фокус переходит к определенному контролю, для отображения инструкций можно использовать процедуру Ввода макроса или события; например, можно использовать макрос или процедуру событий, чтобы отобразить небольшую форму или поле сообщений, определяющие тип данных, которые обычно содержит управление, или давать инструкции по использованию управления.
Событие Exit происходит перед событием LostFocus.
В отличие от события LostFocus, событие Exit не происходит, когда форма теряет фокус. Например, предположим, что вы выберите в форме контрольный ящик, а затем щелкните отчет. События Enter и GotFocus происходят при выборе контрольного окна. Только событие LostFocus происходит при нажатии отчета. Событие Exit не происходит (так как фокус перемещается в другое окно). Если снова выбрать контрольное окно на форме, чтобы привести его на первый план, произойдет событие GotFocus, но не событие Enter (так как управление было сосредоточено при последней активной форме). Событие Exit происходит только при нажатии другого управления на форме.
Если вы переместили фокус на управление на форму, и этот контроль не имеет фокуса на этой форме, события Exit и LostFocus для управления, в который основное внимание уделяется форме, происходят до событий Enter и GotFocus для управления, в который вы переехали.
Если вы используете мышь, чтобы переместить фокус из управления в основную форму в управление на подформу этой формы (управление, которое еще не сосредоточено на подформе), происходят следующие события:
- Exit (для управления основной формой)
- LostFocus (для управления основной формой)
- Ввод (для управления подформами)
- Выход (для управления на подформе, в центре внимания)
- LostFocus (для управления на подформе, в центре внимания)
- Ввод (для управления в подформе, в которую переместился фокус)
- GotFocus (для управления подформой, в которую перемещается фокус)
Если управление, в которое вы перемещались в подформу, ранее было сосредоточено, не происходит ни событие Enter, ни событие GotFocus, но событие Enter для управления подформами не происходит. Если переместить фокус с управления на подформу в управление в основной форме, события Exit и LostFocus для управления в подформе не происходят, только событие Exit для управления подформами и события Enter и GotFocus для управления на основной форме.
Вы часто используете мышь или ключ, например Вкладку, чтобы переместить фокус на другой элемент управления. Это приводит к тому, что события мыши или клавиатуры происходят в дополнение к событиям, которые обсуждаются в этой теме.
Пример
В следующем примере к текстовом поле LastName прикрепляются две процедуры события. Процедура ввода событий отображает сообщение, указывав, какие данные пользователь может ввести в текстовом окне. Процедура события Exit отображает диалоговое окно с вопросом о том, следует ли сохранить изменения перед переходом фокуса на другой контроль. Если пользователь нажимает кнопку Отмена, аргумент Отмена замещяет True (1), который перемещает фокус в текстовое поле без сохранения изменений. Если пользователь выбирает кнопку ОК, изменения сохраняются, а фокус перемещается на другой контроль.
Чтобы попробовать пример, добавьте следующую процедуру события в форму с текстовым полем с именем LastName.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Примеры использования элемента управления ListBox
Ранее я рассмотрел методы создания пользовательских форм и основы работы с ними (если вы никогда не работали с пользовательскими формами, рекомендую для начала прочитать указанную заметку). Далее привел целый ряд практически полезных примеров пользовательских диалоговых окон. В настоящей заметке подробнее рассказывается об использовании элемента управления ListBox.[1]
Рис. 1. Установка свойства RowSource на этапе разработки
Скачать заметку в формате Word или pdf, примеры в архиве
Элемент управления ListBox довольно гибкий в использовании, но работа с ним может оказаться достаточно сложной. В большинстве случаев методы, описанные здесь, могут применяться и для работы с элементом управления ComboBox.
При работе с элементом управления ListBox следует учитывать, что:
- Опции списка элемента управления ListBox могут извлекаться из диапазона ячеек (определяемого свойством RowSource) или добавляться с помощью VBA (для этого используется метод Addltem).
- Элемент управления ListBox может быть применен для выделения одной или нескольких опций. Соответствующее поведение определяется значением свойства MultiSelect.
- Если элемент управления ListBox не настроен на выделение нескольких опций, то значение элемента управления ListBox может связываться с ячейкой листа с помощью свойства ControlSource.
- Элемент управления ListBox может отображаться без предварительно выбранной опции (для этого необходимо установить свойство Listlndex равным –1). Но как только пользователь выделит одну из опций списка, отменить выделение будет невозможно. Исключение из этого правила— значение свойства MultiSelect равно True.
- Элемент управления ListBox может содержать несколько столбцов (что указывается в свойстве ColumnCount) и даже описательные заголовки (для этого используется свойство ColumnHeads).
- Вертикальный размер элемента управления ListBox, помещенного в пользовательское диалоговое окно, не всегда совпадает с вертикальным размером объекта UserForm на экране.
- Опции списка элемента управления ListBox могут отображаться в виде флажков, если разрешено выделение нескольких элементов, или в виде переключателей, если поддерживается только единичное выделение. Это поведение определяется значением свойства ListStyle.
Добавление опций в элемент управления ListBox
Перед отображением пользовательского диалогового окна, которое содержит элемент управления ListBox, следует заполнить элемент управления ListBox необходимыми опциями. Элемент управления ListBox заполняется на этапе разработки проекта посредством указания диапазона ячеек, которые содержат необходимые данные. Его также можно заполнить на этапе выполнения, воспользовавшись кодом VBA для добавления всех опций списка.
В двух примерах этого раздела предполагается следующее:
- используется диалоговое окно UserForm с именем UserForm1;
- диалоговое окно UserForm1 содержит элемент управления ListBox, который называется ListBox1;
- рабочая книга содержит лист Лист1, в диапазоне А1:А12 которого определены опции, отображаемые в элементе управления ListBox.
Добавление опций в элемент управления ListBox на этапе разработки
Для добавления опций в элемент управления ListBox на этапе разработки необходимо, чтобы они хранились в диапазоне ячеек рабочей книги. Воспользуйтесь свойством RowSource для указания диапазона, который содержит опции элемента управления ListBox. На рис. 1 показано окно Properties для элемента управления ListBox (см. также файл listbox fill.xlsm) Свойство RowSource установлено равным Лист1!А1: А12. Когда диалоговое окно UserForm отображается на экране, элемент управления ListBox содержит двенадцать опций из этого диапазона. Опции добавляются в элемент управления ListBox на этапе разработки, сразу после того, как диапазон определяется в качестве значения свойства RowSource.
Удостоверьтесь, что в значении свойства RowSource присутствует имя листа. В противном случае элемент управления ListBox будет применять указанный диапазон в активном рабочем листе. Иногда следует идентифицировать диапазон максимально точно, указав даже имя рабочей книги. Лучше всего сначала определить имя для диапазона, а затем включить его в состав разработанного кода. Это гарантирует использование требуемого диапазона, даже если были добавлены или удалены строки, не входящие в диапазон.
Добавление опций в элемент управления ListBox на этапе выполнения
Чтобы добавить опции элемента управления ListBox на этапе выполнения, необходимо:
- с помощью кода определить значение свойства RowSource, чтобы указать диапазон, хранящий необходимые данные;
- создать код, использующий метод Addltem для добавления опций в элемент управления ListBox.
Следующая процедура устанавливает значения свойства RowSource элемента управления ListBox перед тем, как отображается диалоговое окно UserForm. В этом случае опции состоят из значений в ячейках диапазона Categories рабочего листа Budget:
UserForml.ListBoxl.RowSource = » Budget!Categories »
UserForml.Show
Если опции элемента управления ListBox не содержатся в диапазоне ячеек листа, то можно создать специальный код VBA для заполнения элемента управления ListBox перед кодом отображения диалогового окна. Следующая процедура заполняет окно списка элемента управления ListBox названиями месяцев года с помощью метода Addltem:
Источник
Событие TextBox.Exit (Доступ)
Событие Exit происходит незадолго до того, как управление теряет фокус на другом контроле в той же форме или отчете.
Синтаксис
выражения. Exit (Отмена)
выражение Переменная, представляющие объект TextBox.
Параметры
| Имя | Обязательный или необязательный | Тип данных | Описание |
|---|---|---|---|
| Отмена | Обязательный | Integer | Установите для True отмену события. |
Заметки
Это событие не применяется к флажкам, кнопкам параметра или кнопкам торгле в группе опций. Оно применяется только к самой группе опций.
Чтобы запустить процедуру макроса или события, когда это событие произойдет, установите свойство OnExit имя макроса или [Event Procedure].
Так как событие Enter происходит до того, как фокус переходит к определенному контролю, для отображения инструкций можно использовать процедуру Ввода макроса или события; например, можно использовать макрос или процедуру событий, чтобы отобразить небольшую форму или поле сообщений, определяющие тип данных, которые обычно содержит управление, или давать инструкции по использованию управления.
Событие Exit происходит перед событием LostFocus.
В отличие от события LostFocus, событие Exit не происходит, когда форма теряет фокус. Например, предположим, что вы выберите в форме контрольный ящик, а затем щелкните отчет. События Enter и GotFocus происходят при выборе контрольного окна. Только событие LostFocus происходит при нажатии отчета. Событие Exit не происходит (так как фокус перемещается в другое окно). Если снова выбрать контрольное окно на форме, чтобы привести его на первый план, произойдет событие GotFocus, но не событие Enter (так как управление было сосредоточено при последней активной форме). Событие Exit происходит только при нажатии другого управления на форме.
Если вы переместили фокус на управление на форму, и этот контроль не имеет фокуса на этой форме, события Exit и LostFocus для управления, в который основное внимание уделяется форме, происходят до событий Enter и GotFocus для управления, в который вы переехали.
Если вы используете мышь, чтобы переместить фокус из управления в основную форму в управление на подформу этой формы (управление, которое еще не сосредоточено на подформе), происходят следующие события:
- Exit (для управления основной формой)
- LostFocus (для управления основной формой)
- Ввод (для управления подформами)
- Выход (для управления на подформе, в центре внимания)
- LostFocus (для управления на подформе, в центре внимания)
- Ввод (для управления в подформе, в которую переместился фокус)
- GotFocus (для управления подформой, в которую перемещается фокус)
Если управление, в которое вы перемещались в подформу, ранее было сосредоточено, не происходит ни событие Enter, ни событие GotFocus, но событие Enter для управления подформами не происходит. Если переместить фокус с управления на подформу в управление в основной форме, события Exit и LostFocus для управления в подформе не происходят, только событие Exit для управления подформами и события Enter и GotFocus для управления на основной форме.
Вы часто используете мышь или ключ, например Вкладку, чтобы переместить фокус на другой элемент управления. Это приводит к тому, что события мыши или клавиатуры происходят в дополнение к событиям, которые обсуждаются в этой теме.
Пример
В следующем примере к текстовом поле LastName прикрепляются две процедуры события. Процедура ввода событий отображает сообщение, указывав, какие данные пользователь может ввести в текстовом окне. Процедура события Exit отображает диалоговое окно с вопросом о том, следует ли сохранить изменения перед переходом фокуса на другой контроль. Если пользователь нажимает кнопку Отмена, аргумент Отмена замещяет True (1), который перемещает фокус в текстовое поле без сохранения изменений. Если пользователь выбирает кнопку ОК, изменения сохраняются, а фокус перемещается на другой контроль.
Чтобы попробовать пример, добавьте следующую процедуру события в форму с текстовым полем с именем LastName.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник