이전 글에서 목록을 만드는 데 사용하는 콤보 상자(ComboBox) 컨트롤에 대해 알아보았습니다. 이번에는 목록 상자(ListBox) 컨트롤에 대해 알아보겠습니다.
1. 목록 상자(ListBox) 컨트롤
목록 상자(ListBox) 컨트롤은 선택한 목록 하나만을 보여주는 콤보 상자(ComboBox) 컨트롤과는 달리 목록 전체를 한 번에 보여줍니다.
[그림 1]은 사용자 정의 폼의 도구 상자를 보여주며 빨간색 사각형으로 표시된 아이콘이 목록 상자(ListBox) 컨트롤을 생성하는 아이콘입니다. 이 아이콘을 클릭하고 마우스를 사용자 정의 폼내에서 원하는 위치에 클릭한 후 드래그하여 원하는 크기로 만든 후 마우스 왼쪽 버튼에서 손을 놓으면 목록 상자가 만들어집니다.
2. 예제로 확인
[그림 2]의 영업실적 시트를 예제로 목록 상자(ListBox)에 대해 확인해 보겠습니다.
이 영업실적 시트에 ActiveX 버튼을 하나 생성하고 속성창 Caption에 '조회'라고 입력합니다.
그리고, VBE 창을 열고 사용자 정의 폼(UserForm)을 생성합니다.
[그림 3]과 같이 목록 상자 1개, 버튼 2개를 생성합니다.
사용자 정의 폼의 속성창에서 Caption에 '영업실적'이라고 입력하고, 좌측 버튼의 Caption에는 '확인'을, 우측 버튼의 Caption에는 '취소'를 입력합니다.
사용자 정의 폼을 마우스 왼쪽 버튼으로 더블클릭을 하시면 코드 창이 화면에 뜹니다. 코드 창이 뜨면 코드에는 Click에 대한 Sub 프로시저가 자동으로 생성되는데 왼쪽 위쪽에 Click이라고 되어 있는 부분의 화살표를 클릭하시고 Initialize를 선택하시면 Initialize의 Sub 프로시저가 생성됩니다. 그리고, Click의 Sub 프로시저 부분은 삭제하셔도 됩니다.
그 코드 창에 다음과 같이 코드를 작성합니다.
Private Sub UserForm_Initialize()
ListBox1.RowSource = Range("B5", Range("B5").End(xlDown).End(xlToRight)).Address
ListBox1.ColumnCount = 4
ListBox1.ColumnHeads = True
ListBox1.ColumnWidths = "50;40;60;60"
End Sub
Range("B5").End(xlDown).End(xlToRight)
: B5 셀에서부터 아래로 데이터가 입력된 셀 마지막까지 이동하고 다시 오른쪽으로 데이터가 입력된 셀 마지막까지 이동하였을때 셀 주소를 반환합니다.
ListBox1.RowSource = Range("B5", Range("B5").End(xlDown).End(xlToRight)).Address
: ListBox1에 엑셀 시트의 B5 셀부터 데이터가 입력되어 있는 마지막 셀까지의 값을 입력하여 목록 상자에 표시해줍니다.
ListBox1.ColumnCount = 4
: 목록 상자의 열을 4개로 만들어 줍니다. 기본은 1개로 되어 있어서 이 코드가 없으면 영업실적 시트 내용 중에서 가장 첫 번째 열의 내용인 '성명'만 나타나게 됩니다.
ListBox1.ColumnHeads = True
: 목록 상자 제일 윗줄에 제목이 표시됩니다.
ListBox1.ColumnWidths = "50;40;60;60"
: 목록 상자 각 열의 폭을 입력합니다.
참고로 이 코드를 작성할 때 ListBox1이 반복되어 사용되는데 이를 With를 사용하면 반복 입력하지 않아도 됩니다. With를 써서 다음과 같이 작성할 수도 있습니다.
Private Sub UserForm_Initialize()
With ListBox1
.RowSource = Range("B5", Range("B5").End(xlDown).End(xlToRight)).Address
.ColumnCount = 4
.ColumnHeads = True
.ColumnWidths = "50;40;60;60"
End With
End Sub
사용자 정의 폼에서 확인 버튼을 마우스로 더블클릭하고 다음과 같이 코드를 작성합니다.
Private Sub CommandButton1_Click()
MsgBox ("성명 : " & ListBox1.Column(0) & " " & "상반기 : " & ListBox1.Column(2) & " " & "하반기 : " & ListBox1.Column(3))
End Sub
확인 버튼을 클릭하면 목록 상자에서 선택한 데이터가 메시지 창으로 나타나게 됩니다.
사용자 정의 폼에서 취소 버튼을 마우스로 더블 클릭하시고 다음과 같이 코드를 작성합니다.
Private Sub CommandButton2_Click()
Unload Me
End Sub
Unload Me
: 이 코드는 'Unload UserForm1'과 동일한 내용으로 취소 버튼이 생성되어 있는 창이 UserForm1 사용자 정의 폼이므로 간단히 'Me'를 사용할 수 있습니다.
이제 시트에 생성한 조회 버튼을 클릭하면 작성한 사용자 정의 폼이 나타나는 것을 확인하실 수 있습니다.
'엑셀 > VBA' 카테고리의 다른 글
엑셀 VBA 값 찾기 메서드 Find 알아보기 (0) | 2022.01.18 |
---|---|
엑셀 VBA ScrollBar & SpinButton 사용하기 (0) | 2022.01.15 |
엑셀 VBA 목록 만들기 - ComboBox (1) | 2022.01.11 |
엑셀 VBA 옵션 선택 컨트롤 - CheckBox, OptionButton (0) | 2022.01.10 |
엑셀 VBA 텍스트 상자(TextBox) 컨트롤 사용하기 (0) | 2022.01.06 |