Список VBA - выбранный элемент

В этой статье будет продемонстрировано, как работать с выбранным элементом в поле списка в Excel VBA.

Окна списка широко используются в формах VBA, но также могут использоваться в вашем листе Excel. Они показывают пользователям список опций, один или несколько из которых пользователь может выбрать.

Создание списка в форме VBA

Чтобы создать список в форме VBA, нам сначала нужно создать UserForm.

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

Добавление значений в список

В событии Initialize формы введите следующий код. Поле со списком подберет значения, которые хранятся в диапазоне ячеек на вашем листе Excel.

123456 Частная подписка UserForm_Initialize ()Dim rng As RangeДля каждого диапазона в диапазоне ("A1: A50")Me.lstState.AddItem rng.ValueСледующий номерКонец подписки

Когда мы запустим форму, появится список, как показано на изображении ниже:

Выбор значений из списка

По умолчанию одно значение может быть выбрано в списке в пользовательской форме. Однако это можно исправить, изменив свойство множественного выбора списка.

Щелкните поле списка, чтобы выбрать его, а затем в окне свойств измените свойство множественного выбора с 0-frmMultiSelectSingle к 1-frmMultiSelectMulti.

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

Если мы изменим опцию на 2-frmMultiSelectExtended, это означает, что мы можем выбрать одно из значений, а затем, удерживая нажатой клавишу SHIFT, выберите другое значение ниже по списку, и все элементы между двумя выбранными значениями также будут выбраны.

Программирование на VBA | Генератор кода действительно работает для вас!

Работа с выбранными значениями в VBA

В зависимости от типа параметра, который мы использовали для свойства Multi-Select в окне списка, существует несколько способов использования значения или значений, выбранных в поле списка в коде VBA.

Присвоение значения переменной

Мы можем использовать After_Update событие списка, чтобы присвоить выбранное значение переменной.

Во-первых, давайте создадим переменную уровня модуля в верхней части модуля формы.

Под словами Вариант Явныйсоздайте следующую строковую переменную.

1 Dim strState как String.

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

Событие щелчка в списке будет создано автоматически. Выберите After_Update Событие формирует список доступных процедур.

В событии After_Update введите следующий код:

123 Частная подпрограмма lstState_AfterUpdate ()strState = Me.lstStateКонец подписки

ПРИМЕЧАНИЕ. Вы можете удалить событие Click, так как это не требуется.

Теперь, если мы запустим форму и щелкнем по списку, выбранное значение будет сохранено в переменной. Чтобы проверить это, мы можем поставить точку BREAK в коде.

Теперь, когда мы запускаем форму, если мы щелкнем по списку, код перейдет в режим DEBUG и остановится в нашей точке останова. Если мы затем нажмем F8 на клавиатуре, чтобы перейти на следующий шаг в коде, переменная будет заполнена выбранным элементом в списке.

Мы можем просмотреть это значение, наведя указатель мыши на переменную.

ИЛИ

Мы можем просмотреть значение в окне «Немедленное».

Устали искать примеры кода VBA? Попробуйте AutoMacro!

Использование командной кнопки для возврата значения в Excel

Во-первых, мы создаем командную кнопку в форме, чтобы кнопка OK возвращала значение или значения, выбранные в поле списка, в Excel.

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

В окне "Свойства" измените название кнопки на cmdOKи измените заголовок и ускоритель кнопки.

Назначение ускорителя состоит в том, чтобы пользователь использовал клавиатуру для активации кнопки, в данном случае Alt + O активирует кнопку.

Чтобы командная кнопка работала, нам нужно добавить за ней код, чтобы при нажатии кнопки запускался код. Это называется событием Click кнопки.

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

Введите следующий код в событие щелчка командной кнопки.

123 Частная подпрограмма cmdOK_Click ()Диапазон ("E1") = strStateКонец подписки

Код подберет переменную, которую мы объявили в событии After_Update ListBox, и вернет значение в диапазон в Excel.

В качестве альтернативы мы можем выбрать значение непосредственно из списка, не используя переменную.

123 Частная подпрограмма cmdOK_Click ()Диапазон ("E1") = me.lstStateКонец подписки

Когда мы запускаем форму, выбранное значение будет возвращено в Excel, когда мы нажмем кнопку ОК.

Выбор нескольких значений

Если мы установили свойство множественного выбора в списке на 1 или 2, что позволяет нам выбирать несколько значений в списке, тогда код для выбора этих значений немного отличается.

В After_Update событие больше не запускается при выборе значений в списке - поэтому мы не можем использовать это событие.

Мы по-прежнему можем использовать событие нажатия кнопки команды, но нам нужно перебрать значения, выбранные в поле списка, чтобы вернуть их в Excel.

В событии щелчка командной кнопки введите следующий код.

12345678910 Частная подпрограмма cmdOK_Click ()Dim x As IntegerДиапазон ("E1"). ВыберитеДля x = 0 To Me.lstState.ListCount - 1Если Me.lstState.Selected (x) = True, тоActiveCell = Me.lstState.List (x)ActiveCell.Offset (1, 0) .SelectКонец, еслиДалее xКонец подписки

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

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave