엑셀 VBA 리스트 박스(ListBox) 사용하는 방법

엑셀(Excel)/VBA

엑셀 VBA 리스트 박스(ListBox) 사용하는 방법

 

환경: Microsoft Excel 2013

 

엑셀에서 리스트 박스는 여러 개의 데이터를 담거나 선택을 요구할 때 쓰이는 컨트롤입니다. 오늘은 ActiveX 컨트롤 중에서 리스트 박스를 다루는 방법에 대해 알아 보겠습니다. 샘플로는 텍스트 박스를 하나 더 두고 입력한 값들을 목록 상자에 계속해서 추가하는 것입니다. 그리고 목록에서 추가될 때 위치를 지정하는 방법도 알아 보겠습니다.

 

먼저 ActiveX 컨트롤을 추가하기 위해서 [개발 도구] 탭으로 갑니다. 삽입 리본 메뉴를 클릭하시면 양식 컨트롤과 ActiveX 컨트롤 목록을 볼 수 있습니다. 그 중 ActiveX 컨트롤에 있는 목록 상자를 클릭합니다.

엑셀 VBA 리스트 박스(ListBox) 사용하는 방법

 

추가한 텍스트 상자에 값을 넣기 위한 버튼도 추가합니다. 버튼에 이름을 변경하기 위해 오른 마우스를 눌러 [속성] 메뉴를 선택합니다

엑셀 VBA 리스트 박스(ListBox) 사용하는 방법

 


속성창에서 Caption 항목은 컨트롤의 이름에 해당합니다. Caption 값을 변경하면 바로 반영이 됩니다

엑셀 VBA 리스트 박스(ListBox) 사용하는 방법

 

코드 편집을 위해 버튼을 더블 클릭하거나 오른 마우스를 눌러 [코드 보기] 메뉴를 선택합니다. 그럼 함수가 자동으로 생성되고 코드를 입력할 수 있는 공간이 만들어 집니다

엑셀 VBA 리스트 박스(ListBox) 사용하는 방법

 

리스트 박스의 이름은 왼쪽 상단 이름 상자에서 확인할 수 있습니다. 리스트 박스에 데이터들을 모두 제거하고 싶을 때 사용하는 속성은 Clear 입니다

엑셀 VBA 리스트 박스(ListBox) 사용하는 방법

 

AddItem 함수를 사용해서 추가한 데이터들은 리스트 박스 제일 하단으로 들어가게 됩니다. 만약 새로운 데이터를 제일 상단부터 추가하려면 어떻게 해야 할까요

엑셀 VBA 리스트 박스(ListBox) 사용하는 방법

 

AddItem 에는 생략 가능한 인수가 하나 더 있습니다. 두 번째 인수가 목록 상자의 위치를 결정하는 Index 값입니다. ListBox1.AddItem TextBox1.value, 0 은 목록 상자에서 제일 상단을 가리키는 것입니다. 그림처럼 “333” 을 추가하면 “111” 값 위로 들어가겠죠

엑셀 VBA 리스트 박스(ListBox) 사용하는 방법

 

삭제 함수인 RemoveItem 도 마찬가지입니다. ListBox1.RemoveItem (0) 은 제일 상단에 있는 데이터를 삭제하게 됩니다. 실행하는 순간 이전에 추가했던 “333” 이 삭제되겠죠

엑셀 VBA 리스트 박스(ListBox) 사용하는 방법

 

오류의 가능성에 대한 대처도 필요합니다. 인덱스 값을 잘못 지정할 수 있기 때문입니다. 잘못된 index 값에 의해 에러는 다음과 같습니다

엑셀 VBA 리스트 박스(ListBox) 사용하는 방법

  

에러 처리를 위한 소스는 다음과 같습니다. On Error GoTo 지시어와 ERROR_HANDLER 핸들을 사용해서 에러가 났을 때 ERROR_HANDLER: 아래로 점프하게 합니다. 이곳에서 에러 처리를 위한 소스를 만드시면 됩니다.

 

Private Sub CommandButton2_Click()

   

    On Error GoTo ERROR_HANDLER

   

    ListBox1.RemoveItem (10)

   

ERROR_HANDLER:

    RemoveListItem = False

   

End Sub



Posted by 녹두장군

댓글을 달아 주세요