엑셀(Excel) VBA - 콤보상자에 ID 를 추가하여 선택할수 있도록 하기

 

환경 :  Microsoft Excel 2010

 

이전에 만든 로그인 폼에서 ID 를 입력하는 텍스트 박스 대신 콤보박스를 넣습니다. 그리고 콤보박스에는 워크시트에 저장되어있는 아이디를 추가하여 선택할수 있도록 구현합니다.

 

콤보박스에서 아이디를 선택할수 있도록 하기 위해 기존에 있던 텍스트 박스를 삭제하고 콤보박스를 넣습니다. 그리고 아이디를 cboId 로 입력합니다.

 

엑셀(Excel) VBA - 콤보상자에 ID 를 추가하여 선택할수 있도록 하기

 

콤보박스에 사용자 아이디를 넣기위해서는 어느 시점에 값을 넣으면 될까요? 폼이 로딩할 때 겠죠. 폼이 뜰 때 워크시트에 있는 데이터를 가져와서 콤보박스에 전부 집어 넣으면 됩니다. 폼이 로딩할 때 이벤트함수를 추가하기 위해 폼소스로 갑니다. 그리고 상단에 개체 선택 콤보에서 UserForm 을 선택하고 오른쪽 콤보에서 Initialize() 함수를 추가합니다.

엑셀(Excel) VBA - 콤보상자에 ID 를 추가하여 선택할수 있도록 하기

 

 

이렇게 추가한 이벤트 함수에는 워크시트에서 불러온 ID 를 콤보에 넣는 소스가 들어가야 겠죠. 콤보에 데이터를 집어넣는 방법은 콤보의 RowSource 속성에 ID 데이터가 있는 영역을 집어 넣으면 됩니다. 그리고 ListIndex 속성값을 0 으로 하여 콤보에서 첫번째 값을 화면에 보이게 합니다.

 

Private Sub UserForm_Initialize()

    Me.cboId.RowSource = "사용자정보!A3:A5"

    Me.cboId.ListIndex = 0

End Sub

 

엑셀(Excel) VBA - 콤보상자에 ID 를 추가하여 선택할수 있도록 하기

 

이제 ID 가 로딩이 되었으니 로그인 버튼을 눌렀을 때 ID 를 콤보에서 가져와 확인하는 과정이 수정되어야 합니다. 텍스트 이름 대신 콤보박스 이름을 바꾸면 간단하게 끝납니다.

 

pwd = Application.VLookup(Me.cboId, loginData, 2, 0)

name = Application.VLookup(Me.cboId, loginData, 3, 0)

 

엑셀을 저장하고 종료한뒤 다시 띄워봅니다. 콤보에 정상적으로 ID 들이 들어가 있는 것을 확인할수 있습니다.

엑셀(Excel) VBA - 콤보상자에 ID 를 추가하여 선택할수 있도록 하기

 

 

Posted by 녹두장군