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

Давайте разберемся с этим простым упражнением: — Мы взяли данные, в которых есть подробные данные об идентификаторе электронной почты для каждого сотрудника.

Data

Следуйте инструкциям, приведенным ниже, чтобы создать список, в котором можно выбрать несколько вариантов с помощью кода VBA: —

Вставка окна списка

Чтобы вставить окно списка на лист Excel, перейдите на вкладку «Разработчик»> нажмите «Вставить»>, а затем нажмите кнопку «Список» под элементом управления ActiveX

ArrowInsertingListBox

На вкладке «Разработчик» нажмите «Режим дизайна», чтобы активировать дизайн, затем нажмите «Свойства» на вкладке «Разработчик», откроется диалоговое окно «Свойства».

Выберите поле «Список», затем перейдите в диалоговое окно «Свойства». Перейдите на вкладку «Категории». Под заголовком «Разное» перейдите к свойству ListFillRange и назначьте диапазон, содержащий значения для поля списка.

Под заголовком «Поведение» измените свойство Multiselect на 1-fmMultiSelectMulti

ArrowPropertiesDialogBox

ArrowPropertiesDialogBox-2

Теперь вставьте две командные кнопки на лист Excel, перейдите на вкладку «Разработчик»> нажмите «Вставить»>, а затем нажмите значок кнопки в разделе «Управление формой»

ArrowCommandButton

Щелкните правой кнопкой мыши кнопку и выберите свойство «Изменить текст» и переименуйте две кнопки в «Отменить выбор имен» и «Отправить».

Нажмите клавишу Alt + F11, чтобы открыть редактор Visual Basic. Добавьте новый модуль и вставьте в модуль приведенный ниже код.

«Кодирование над кодом» содержит две процедуры — GettingSelectedItems и UnselectedItems. Назначьте процедуру GettingSelectedItems кнопке Submit и процедуру UnselectedItems кнопке UnselectedItems.

ArrowAssigningMacro

AssigningMacro

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

Логическое объяснение

В этом примере наша цель — получить идентификатор электронной почты с именем, выбранным пользователем в поле списка, в столбец 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]