엑셀 인사관리시스템에서 부서별로 선택할 수 있는 기능을 만들어 보겠습니다.
엑셀 매크로 기능중 콤보박스 컨트롤이 있습니다. 콤보박스에서 부서를 선택하면
리스트박스에 해당 부서의 직원만 나오게 하고 나오면 직원을 클릭하면 상세내용이
보이도록 합니다.
우선 사용자 정의 폼을 들어가서 컨트롤를 추가합니다.
콤보박스 컨트롤을 추가 합니다.
컨트롤 위에 테스트 컨트롤를 추가합니다.
이제 매크로 프로그램을 작성 합니다.
추가한 콤보박스(ComboBox1) 컨트롤을 더블 클릭하면 프로그램 작성 화면이 나온다.
콤보박스의 데이터가 변경이 발생할 떄 이벤트로 처리 됩니다.
Private Sub ComboBox1_Change()
Dim as_Data, as_Temp()
Dim strDept As String
Dim i As Long, k As Integer, n As Integer
strDept = Me.ComboBox1.Value '부서명
as_Data = Sheet2.UsedRange '사원명부의 사용범위
For i = 2 To UBound(as_Data, 1)
If as_Data(i, 5) = strDept Then ' 부서(소속) 5번째 행
n = n + 1
ReDim Preserve as_Temp(1 To 8, 1 To n)
For k = 1 To 8 '부서내 직원을 vR에 넣는다.
as_Temp(k, n) = as_Data(i, k)
Next k
End If
Next i
'부서내 직원이 한명일 경우(n=1)
If n = 1 Then
Me.ListBox1.Column = as_Temp
ElseIf n > 1 Then
Me.ListBox1.List = WorksheetFunction.Transpose(as_Temp)
Else
End If
End Sub
그리고 이제 사용자 정의 폼이 초기화 될 때 처리해야할 이벤트를 수정해 줍니다.
콤보박스에 부서명을 만들어 줍니다.
Private Sub UserForm_Initialize()
Dim rng As Range
Dim rngCell As Range
Set rng = Application.Range("사원명부!E2:e12")
With CreateObject("system.collections.arraylist")
For Each rngCell In rng
If Not .contains(rngCell.Value) Then '중복제거
.Add rngCell.Value
End If
Next rngCell
.Sort '오름차순 정열
Me.ComboBox1.List = .toarray()
Me.ComboBox1.ListIndex = 0
End With
End Sub
그러면 매크로 프로그램이 작성이 완료 됩니다.
완료된 화면을 보겠습니다. 인사관리 실행버튼을 누르면 아래와 같이 완성된 화면을 볼 수 있습니다.
어느덧 프로그램처럼 완성이 되어 갑니다.
실전예제를 통하여 기능 및 프로그램을 설명을 합니다.
예제를 통하여 나만의 프로그램을 만들어 보도록 합니다.
'엑셀매크로' 카테고리의 다른 글
엑셀 매크로 모듈 추가 방법 (0) | 2023.02.10 |
---|---|
엑셀 매크로 사용자 정의 폼 셀에 자료입력 (0) | 2023.02.08 |
엑셀 매크로 사용자 정의 폼에 이미지 추가 (1) | 2023.02.04 |
엑셀 사용자 정의 폼 - ListBox 사용 (0) | 2023.02.02 |
엑셀 셀 데이터 사용자정의폼에 가져오기 (0) | 2023.02.01 |
댓글