Microsoft Excel에서 VBA를 사용하여 목록 상자에서 여러 값을 선택
이 기사에서는 여러 이름을 선택하고 기본 데이터에서 필요한 데이터를 가져올 수있는 목록 상자를 만드는 방법을 알아 봅니다.
간단한 연습을 통해 이해해 보겠습니다.-모든 직원의 이메일 ID 세부 정보가있는 데이터를 가져 왔습니다.
VBA 코드를 사용하여 객관식 선택 옵션을 제공하는 목록 상자를 만들려면 아래 단계를 따르십시오 .-
목록 상자 삽입
Excel 시트에 목록 상자를 삽입하려면 개발자 탭으로 이동> 삽입 클릭> ActiveX 컨트롤 아래의 목록 상자 버튼 클릭
개발자 탭에서 디자인을 활성화하기 위해 디자인 모드를 클릭 한 다음 개발자 탭에서 속성을 클릭하면 속성 대화 상자가 나타납니다.
목록 상자를 선택한 다음 속성 대화 상자로 이동합니다. 분류 탭을 클릭하십시오. 기타 제목 아래에서 ListFillRange 속성으로 이동하고 목록 상자의 값이 포함 된 범위를 할당합니다.
Behavior 머리글 아래에서 Multiselect 속성을 1-fmMultiSelectMulti
로 변경합니다. 이제 Excel 시트에 두 개의 명령 단추를 삽입하고 개발자 탭으로 이동> 삽입> 클릭 한 다음 양식 컨트롤 아래의 단추 아이콘 클릭
버튼을 마우스 오른쪽 버튼으로 클릭하고 텍스트 속성 편집을 선택하고 두 버튼의 이름을 “이름 선택 취소”및 “제출”로 변경합니다.
Alt + F11 키를 눌러 Visual Basic Editor를 엽니 다. 새 모듈을 추가하고 모듈에 아래 코드를 삽입합니다.
코드 위 코드에는 GettingSelectedItems 및 UnselectedItems 두 가지 프로 시저가 포함되어 있습니다. GettingSelectedItems 프로 시저를 제출 단추에 할당하고 UnselectedItems 프로 시저를 이름 선택 취소 단추에 할당합니다.
절차를 할당 한 후 개발자 탭에서 디자인 모드 버튼을 클릭하여 디자인 모드를 비활성화합니다.
논리 설명
이 예제에서 우리의 목표는 목록 상자에서 사용자가 선택한 이름의 이메일 ID를 L 열로 가져 오는 것입니다.
사용자는 목록 상자에서 여러 이름을 선택할 수 있습니다. 이름을 선택한 후 사용자는 제출 버튼을 누르면 목록 상자에서 선택한 이름에 해당하는 이메일 ID가 Excel 시트의 L 열에 나타납니다.
List Box에서 선택한 모든 이름을 선택 해제하려면“Unselect Names”버튼을 클릭하면됩니다.
위의 목표를 달성하기 위해 엑셀 공식과 절차를 사용했습니다.
절차 GettingSelectedItems는 목록 상자에서 선택한 이름을 K10에서 K23 범위로 가져 오기 위해 작성되었습니다.
선택한 이름의 이메일 ID를 얻기 위해 다음 Excel 공식을 사용했습니다.-= IFERROR (VLOOKUP (K10, $ A $ 10 : $ B $ 23,2,0), “”)
위의 수식을 L10 셀에 삽입하고 L10에서 L23 범위에이 수식을 복사하여 붙여 넣습니다.
이 수식은 A10 ~ B23 범위에서 선택한 이름을 조회하여 이메일 ID를 제공합니다.
셀의 글꼴과 배경에 동일한 색상을 사용하여 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]로 문의 해주세요