Lost Information!

엑셀 VBA 기초 - ListBox를 활용하여 쉽게 리스트 입력하기 - 2편 본문

개인브랜드블로그를 만들어 보자/엑셀VBA

엑셀 VBA 기초 - ListBox를 활용하여 쉽게 리스트 입력하기 - 2편

Lostinformation 2020. 12. 28. 19:29

모두가 칼퇴하는 그날까지~

 

지난 글에서는

속성을 이용하여  

리스트 박스를

활용하는 방법

알려드렸습니다.

 

만일 저번 내용을 모르시거나

기억이 나질 않으신다면

밑에 글을 참고해주세요.

red-s.tistory.com/2472

 

엑셀 VBA 기초 - ListBox를 활용하여 쉽게 리스트 입력하기 - 1편

모두가 칼퇴하는 그날까지~ 지난 글에서는 한글과 영어, 숫자, 기타 문자까지 엑셀이 알아내는 방법을 알려드렸습니다. 만일 저번 내용을 모르시거나 기억이 나질 않으신다면 밑에 글을 참고

red-s.tistory.com

 

이번 글에서는 

속성으로 입력하는 방법이

아닌 VBA로 입력하는 방법

알려드리도록 하겠습니다.

 

그럼 엑셀을 실행하고 

ALT + F11을 눌러주세요.

 

그리고 저번에 만든 것처럼

유저 폼에 목록 상자(리스트 박스)

를 선택하여 위와 같은 형태로

만들어주세요.

 

그리고 유저 폼의 상단을

더블클릭해주세요.

 

그리고 위의 상단을

UserForm으로 변경하고 

그 옆의 목록 또한

Initialize로 변경해주세요.

 

그리고 클릭해서 창으로 

들어온 만큼 

 

Private Sub ListBox1_Click()
End Sub

 

적혀 있는 부분은 삭제해주세요.

 

그리고 이렇게 

적어주시면 됩니다.

 

바로 설명해드리면

 

Private Sub UserForm_Initialize()

유저 폼을 실행될 때마다

Dim lngEndRow   As Long

lngEndRow라는 

변수를 설정할게

(데이터의 마지막행을

받을 변수)


Dim rngList     As Range

rngList라는

변수를 설정할게

(리스트를 받은 변수)

 

lngEndRow = Range("B10000"). End(xlUp). Row

행을 밑에서부터 올라오면서

마지막 행 번호를 찾아


Set rngList = Range("B5:F" & lngEndRow)

리스트는 B5셀부터

마지막 행까지로 설정해

     
Me.ListBox1.RowSource = rngList.Address

리스트 박스의 정확한 범위는

rngList를 이고(동적 범위)

 

Me.ListBox1.ColumnCount = 5

리스트 박스의 목록은

5개야 


Me.ListBox1.TextAlign = fmTextAlignCenter

그리고 리스트 박스를

글자들을 가운데 정렬하고


Me.ListBox1.ColumnHeads = True
리스트 박스의 제목을 

고정시켜 
    
End Sub

 

이렇게 적고 F5로 확인하면

 

이렇게 속성으로 만들었던

리스트 박스와 크게 다르지 않게

VBA로도 만들 수 있다는 것을

확인할 수 있습니다.

 

두 가지의 방법 중 보다 자신에게

맞는 방법으로 리스트 박스를

만드는 것을 추천합니다.

 

그리고 저번 글에 알려드렸던 

Offset을 활용하여 유동적으로

변경되는 데이터를 묶는 방법도

꼭 기억하시면 도움이 될 겁니다.

 

여기까지 궁금하신 점은

댓글에 남겨주시고요.

 

공감 구독도 부탁드립니다.




 

Comments