[Access VBA] listbox의 선택된 행의 데이터를 읽는 방법

Access 에서 폼을 이용할 때 리스트박스의 활용도가 높습니다. 데이터베이스의 값을 가공하여 사용자가 볼 수 있도록 정리하여 보여줄 수 있어 강력한 사용자 편의성을 제공합니다.

리스트박스가 진정으로 활용성을 가지려면 사용자와의 상호작용을 적극적으로 반영할 수 있어야 합니다. 즉, 사용자가 어떠한 항목을 선택했는지를 확인하고 선택한 값에 따라서 다음 행동을 수행할 수 있어야 하기 때문에 리스트박스에서 사용자의 선택한 행의 인덱스 값이나 실제 내용을 확인할 수 있는 방법을 정리해 보겠습니다.

일단 리스트박스는 단일 열로 구성되나 여러개의 열로 구성될 수도 있습닌다. 리스트박스가 몇개의 열로 구분되었는지에 따라서 그 사용법에 차이가 있습니다. 각각의 상황에서 사용자가 선택한 데이터의 값을 찾는 방법에 차이가 있습니다. 경우별로 내용을 정리해보도록 하겠습니다.

선택된 행 index값 얻기

현재 선택된 리스트박스의 행 index번호를 얻기 위해서는 다음과 같이 작성합니다. 이 때 인덱스 번호는 0부터 시작합니다. 폼 내부에서 wsLists라는 이름을 가진 리스트박스가 있을 경우 사용자가 선택한 항목의 인덱스 번호를 리턴하는 코드입니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
For Each varItm In Me.wsLists.ItemsSelected
var = Me.wsLists.ListIndex
msgbox var
Next varItm
For Each varItm In Me.wsLists.ItemsSelected var = Me.wsLists.ListIndex msgbox var Next varItm
For Each varItm In Me.wsLists.ItemsSelected
    var = Me.wsLists.ListIndex
    msgbox var
Next varItm

선택된 항목의 첫번째 열의 데이터 확인

Access 파일 내에 wsList라는 리스트박스가 있고 리스트박스에 선택된 항목의 첫번째 열의 내용을 확인하는 방법입니다. 이 경우 리스트박스의 열의 개수가 단일이거나 복수여도 상관없이 작동합니다. 선택된 항목의 첫번째 항목을 전달하기 때문에 만약 선택된 항목이 없다면 에러를 발생시키게 됩니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
For Each varItm In Me.wsLists.ItemsSelected
name = Me.wsLists.ItemData(varItm)
msgbox name
Next varItm
For Each varItm In Me.wsLists.ItemsSelected name = Me.wsLists.ItemData(varItm) msgbox name Next varItm
For Each varItm In Me.wsLists.ItemsSelected
    name = Me.wsLists.ItemData(varItm)
    msgbox name
Next varItm

그럼 2개 이상의 열로 구성된 리스트박스에서 첫번째 열 이외의 열의 값을 얻기 위해서 어떻게 해야 할까요?

복수열의 데이터 중 중간 열의 데이터 확인하기

만약 선택된 행의 두번째 값을 얻고 싶다면 다음과 같이 작성합니다. 아래 예시는 선택된 항목의 두번째 열의 데이터값을 반환하게됩니다. 이 역시 선택된 행의 데이터를 반환하므로 리스트박스의 속성이 데이터를 선택할 수 없도록 되어 있거나 선택된 데이터가 없을 경우에는 에러를 발생시키게 됩니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
For Each varItm In Me.wsLists.ItemsSelected
name = Me.wsLists.Column(2)
msgbox name
Next varItm
For Each varItm In Me.wsLists.ItemsSelected name = Me.wsLists.Column(2) msgbox name Next varItm
For Each varItm In Me.wsLists.ItemsSelected
    name = Me.wsLists.Column(2)
    msgbox name
Next varItm

위와 같이 리스트박스를 이용해서 사용자와 상호작용하기 위해서 필요한 프로그래밍 기법에 대해서 알아보았습니다. 리스트박스의 다양한 다른 기능들에 대해서도 향후 기회가 되는대로 다뤄보도록 하겠습니다.

Categories VBA