배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Excel 버전:   공통
검색어:   ListBox, 배열
제목:   배열을 이용하여 리스트박스 채우기
     
 

New Page 2
  STEP> 따라하기


※ 아래 Daily Tip은 곽승주님이 제공해주신 내용입니다

ListBox컨트롤은 목록형태의 데이터를 보여줍니다. 그리고 목록 중 하나 또는 여러 개를 선택할 수 있도록 해주죠. ListBox컨트롤을 Userform에 올려두고 가장 먼저 해야 하는 일중 하나는 ListBox를 채우는 일입니다.

ListBox에 항목을 입력하는 메소드로는 AddItem을 많이 사용합니다. AddItem메소드 뒤에 입력하려는 항목을 두면 됩니다. 선택사항으로 항목 뒤에 몇 번째(즉 ListIndex)에 둘 것인가를 지정할 수 있습니다. 그러나 지정하지 않는다면 ListIndex는 입력된 순서대로 0부터 매겨집니다.

ListBox1.AddItem "Left Top" 'ListIndex = 0
ListBox1.AddItem "Left Center" 'ListIndex = 1
ListBox1.AddItem "Left Bottom" 'ListIndex = 2

그러나 AddItem 외에 ListBox의 목록을 채우는 List와 Column 프로퍼티가 있습니다. List프로퍼티는 ListBox 의 목록 항목을 반환하거나 설정합니다. Column 프로퍼티는 ListBox 에서 항목을 한 개 이상 지정할 때 사용합니다.

이러한 속성은 입력하려는 항목을 배열에 저장해두고 한번에 입력하는 경우 유용합니다. AddItem이 항목을 하나 하나 입력하는 반면 한꺼번에 입력할 수 있다는 점이 유용합니다. 다음은 이러한 속성을 사용 예입니다.

위의 Userform에는 두 개의 ListBox 가 있으며 상단의 LsitBox는 List프로퍼티를 이용하여 목록을 채운 예이고 하단의 ListBox는 Column프로퍼티를 이용하여 목록을 채운 예입니다.

두 개의 ListBox는 3개의 열을 가지고 있으며 첫 번째 열에는 사람이름, 두 번째 열에는 집, 세 번째 열에는 직업을 표시합니다.

Private Sub UserForm_Initialize()
  ListBox1.ColumnCount = 3
  ListBox2.ColumnCount = 3

  Dim ar(1 To 2, 1 To 3)

  ar(1, 1) = "김선희"
  ar(1, 2) = "선희네 집"
  ar(1, 3) = "선희의 직업"

  ar(2, 1) = "노충현"
  ar(2, 2) = "충현이 집"
  ar(2, 3) = "충현이 직업"

  ListBox1.List = ar()

  Dim ar1(1 To 3, 1 To 2)
  ar1(1, 1) = "우종수"
  ar1(1, 2) = "고진배"

  ar1(2, 1) = "종수네 집"
  ar1(2, 2) = "진배의 집"

  ar1(3, 1) = "종수의 직업"
  ar1(3, 2) = "진배의 직업"

  ListBox2.Column = ar1()
End Sub

위의 코드에서 ar()배열은 List프로퍼티에 사용하고 ar1()배열은 Column()배열에 사용합니다. 그러나 두 개의 배열은 비슷한 내용을 가지고 있지만 약간 다릅니다. 즉 행과 열이 뒤집어진 상태이죠.

즉 List프로퍼티에 입력하는 배열 ar()은 워크시트의 각 셀을 지정하는 방식대로 행x열 의 순서입니다. 즉 List프로퍼티는 List( row, column )과 같은 형식으로 사용하므로 이에 입력하는 배열도 행, 열방식으로 데이터를 입력해야 원하는 결과를 얻을 것입니다.

그러나 Column프로퍼티의 경우 Column( column, row )과 같은 형식으로 사용합니다. 따라서 이에 입력하는 ar1()배열은 그에 맞는 형식(열x행)으로 데이터가 입력되어야 합니다.

이러한 점만 주의한다면 원하는 대로 데이터를 ListBox에 채울 수 있을 것입니다.