본문 바로가기
엑셀매크로

엑셀 사용자 정의 폼 - ListBox 사용

by 진서니 2023. 2. 2.

엑셀 인사관리 시스템 화면을 만들어 사용하고 있는데 ListBox 을 이용하여 데이터를

사용자 정의 폼에 표시하고자 합니다.

 

인사관리 실행버튼을 누르면 인사관리 시스템 화면이 나오는 데 ListBox 컨트롤을 이용하여 

선택할 수 있는 화면을 만들어 보겠습니다.

[관리도구] - [VBA] - 폼 - UserForm1 을 선택하여 폼에서 다음과 같이 화면을 조정 합니다.

인사관리시스템 (Ver 1.0) 부분 부터 아래 종료 까지 마우스로 선택으를 하고 위치를 옮기면 

쉽게 옮겨 집니다. 

옮기고 난 후 도구상자에서 ListBox 컨트롤을 클릭하고 마우스로 사용자 정의 폼에 클릭을 하면

ListBox가 나타납니다. 크기는 적당히 조절 합니다.

그런후에 ListBox을 더블 클릭을 하면 ListBox1 이라는 클릭 이벤트 작성 화면이 생성이 됩니다.

그곳에 매크로 프로그램을 작성하게 됩니다.

작성은 다음과 같이 ListBox에 이ㅛ는 데이터를 선택하면 각각을 컨트롤 Box에 나타나게 합니다..


Private Sub ListBox1_Click()

    ' MsgBox "The selected item is " & ListBox1.ListIndex
    ' MsgBox ListBox1.List(ListBox1.ListIndex, 0)
    
    ' ListBox1 에서 선택하면 화면에 데이터를 보여줍니다.
    
    UserForm1.as_sabun = ListBox1.List(ListBox1.ListIndex, 0) '사번
    UserForm1.as_name.Text = ListBox1.List(ListBox1.ListIndex, 1)  '성명
    
    'UserForm1.as_jumin.Text = ListBox1.List(ListBox1.ListIndex, 2) '주민등록번호
    UserForm1.as_jumin.Text = Left(ListBox1.List(ListBox1.ListIndex, 2), 6) & "-  " & Right(ListBox1.List(ListBox1.ListIndex, 2), 7) '주민등록번호
    
    UserForm1.as_addr.Text = ListBox1.List(ListBox1.ListIndex, 3) '주소
    UserForm1.as_dept.Text = ListBox1.List(ListBox1.ListIndex, 4) '소속
    UserForm1.as_grade.Text = ListBox1.List(ListBox1.ListIndex, 5) '직위
    UserForm1.as_indate.Text = ListBox1.List(ListBox1.ListIndex, 6) '입사일
    UserForm1.as_years.Text = ListBox1.List(ListBox1.ListIndex, 7) '근무년수

End Sub

그 이후에 사용자 정의 폼 UserForm1 을 다시 클릭하고 바탕화면을 클릭하여 들어간 후에 

상단의 오른 쪽의 initialize 이벤트를 선택하면 중간의 이벤트 함수 프로그램을 작성 할 수 있도록 

함수가 만들어 집니다.

Private Sub UserForm_Initialize()


End Sub

\

사용자 정의 폼이 초기화 될 때 프로그램이 작동이 됩니다.

거기에 엑셀 시트에 있는 데이터를 가져오도록 합니다.

Private Sub UserForm_Initialize()

 

' Add the contents of a Range
ListBox1.List = Range("A1:H12").Value

End Sub

엑셀 시트로 돌아와서 인사관리 실행버튼을 클릭 합니다.

실행을 해보니 ListBox에 사번만 보이게 됩니다. 그래서 다시 사용자 정의 폼에 들어가서 

ColumnCount 수를 수정을 해줍니다. (0 -> 8) 

이후에 다시 인사관리 실행단추를 누르면 정상적으로 사번을 선택하면 옆에 컨트롤 박스에 데이터가

나타나게 됩니다.

한번씩 해보시기를 바랍니다.

 

이제 제법 인사관리 프로그램 되었죠. 다양한 나만의 기능을 추가 해보십시요 ...

 

엑셀매크로_사용자정의폼_ListBox1_예제.xlsm
0.03MB

댓글