Выбор нескольких значений из списка, используя поле VBA в Microsoft Excel
В этой статье мы узнаем, как создать список, в котором мы можем выбрать несколько имен и получить необходимые данные из основных данных.
Давайте разберемся с этим простым упражнением: — Мы взяли данные, в которых есть подробные данные об идентификаторе электронной почты для каждого сотрудника.
Следуйте инструкциям, приведенным ниже, чтобы создать список, в котором можно выбрать несколько вариантов с помощью кода VBA: —
Вставка окна списка
Чтобы вставить окно списка на лист Excel, перейдите на вкладку «Разработчик»> нажмите «Вставить»>, а затем нажмите кнопку «Список» под элементом управления ActiveX
На вкладке «Разработчик» нажмите «Режим дизайна», чтобы активировать дизайн, затем нажмите «Свойства» на вкладке «Разработчик», откроется диалоговое окно «Свойства».
Выберите поле «Список», затем перейдите в диалоговое окно «Свойства». Перейдите на вкладку «Категории». Под заголовком «Разное» перейдите к свойству ListFillRange и назначьте диапазон, содержащий значения для поля списка.
Под заголовком «Поведение» измените свойство Multiselect на 1-fmMultiSelectMulti
Теперь вставьте две командные кнопки на лист Excel, перейдите на вкладку «Разработчик»> нажмите «Вставить»>, а затем нажмите значок кнопки в разделе «Управление формой»
Щелкните правой кнопкой мыши кнопку и выберите свойство «Изменить текст» и переименуйте две кнопки в «Отменить выбор имен» и «Отправить».
Нажмите клавишу Alt + F11, чтобы открыть редактор Visual Basic. Добавьте новый модуль и вставьте в модуль приведенный ниже код.
«Кодирование над кодом» содержит две процедуры — GettingSelectedItems и UnselectedItems. Назначьте процедуру GettingSelectedItems кнопке Submit и процедуру UnselectedItems кнопке UnselectedItems.
После назначения процедуры отключите режим дизайна, нажав кнопку режима дизайна на вкладке Разработчик.
Логическое объяснение
В этом примере наша цель — получить идентификатор электронной почты с именем, выбранным пользователем в поле списка, в столбец L.
Пользователь может выбрать несколько имен в списке. После выбора имен пользователь нажимает кнопку отправки, и идентификатор электронной почты, соответствующий выбранному имени в поле списка, появится в столбце L на листе Excel.
Если пользователь хочет отменить выбор всех выбранных имен в списке, пользователь может нажать кнопку «Снять выделение имен».
Для достижения вышеуказанной цели мы использовали формулу и процедуру Excel.
Процедура GettingSelectedItems написана для получения выбранного имени из списка в диапазоне от K10 до K23.
Для получения идентификатора электронной почты для выбранного имени мы использовали следующую формулу Excel: — = ЕСЛИОШИБКА (ВПР (K10, $ A $ 10: $ B $ 23,2,0), «»)
Вставьте приведенную выше формулу в ячейку L10, скопируйте и вставьте эту формулу в диапазон от L10 до L23.
Эта формула предоставит идентификатор электронной почты, найдя выбранное имя в диапазоне от A10 до B23.
Мы скрыли значения в диапазоне от K10 до K23, используя тот же цвет для шрифта и фона ячейки.
Пожалуйста, введите код ниже
Option Explicit Sub GettingSelectedItems() 'Getting selected items in ListBox1 Application.ScreenUpdating = False 'Declaring varialbes Dim ValueSelected As String, i, r As Integer 'deleting selected values Range("K10:K23").Select Selection.ClearContents 'Defining listbox1 of sheet TestDialog With Sheets("TestDialog").ListBox1 r = 0 'Using For loop for looping through all the items in List Box For i = 0 To .ListCount - 1 'Using .selected for selecting only those value which is selected by user in listbox If .Selected(i) Then 'Assigning selected value of List Box to Column K on the sheet Cells(r + 10, 11).Value = .List(i) r = r + 1 End If Next i End With Range("L10").Select End Sub Sub UnselectedItems() 'Unselecting all the items in the list box Application.ScreenUpdating = False 'Declaring varialbes Dim ValueSelected As String, i As Integer 'Defining listbox1 of sheet TestDialog With Sheets("TestDialog").ListBox1 'Using For loop for looping through all the items in List Box For i = 0 To .ListCount - 1 'Unselecting all the items in the list .Selected(i) = False Next i End With 'Deleting data from range K10 to K23 Range("K10:K23").Select Selection.ClearContents Range("L10").Select End Sub
Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.
Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]