본문 바로가기
엑셀매크로

엑셀 매크로 데이터 입력 검증 기능 구현

by 진서니 2023. 2. 11.

엑셀 매크로 사용자 정의 폼을 이용하여 인사관리 시스템을 만들고 있습니다.

엑셀 시트에 사용자 정의 폼을 이용하여 사원입력시 입력내용이 없을 시

검토 확인 기능을 추가합니다.

또한 사원입력이 된후에 사용자 정의 폼의 데이터를 모두 초기화 해야 한다.

그러면 초기화 되어 공백상태에서 다시 입력 환경을 만들어 줍니다.

 

Private Sub CommandButton2_Click()

Dim lastrow As Integer
Dim ws As Worksheet
Set ws = Worksheets("사원명부")
Dim as_data As String

lastrow = ws.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row + 1

If as_sabun.Value = "" Then
    MsgBox "사번을 입력 바랍니다."
Else
    '사번이 중복이 되어 있으면 메시지 보여주고 저장하지 말고 빠져나온다.
    as_data = as_sabun.Value
    
    For i = 2 To lastrow - 1
        If as_data = Cells(i, 1) Then
            MsgBox as_sabun.Value & " : 사번이 중복 되었습니다. 사번을 확인후 입력 바랍니다!"
            '커서가 사번을 가르킨다.
            as_sabun.SetFocus
            Exit Sub
        End If
    Next i
        
    If as_sabun.Value = "" Then
        MsgBox "사번을 입력/확인 바랍니다."
        as_sabun.SetFocus
         Exit Sub
    End If
       
    If as_name.Value = "" Then
        MsgBox "성명을 입력/확인 바랍니다."
        as_name.SetFocus
         Exit Sub
    End If
    
    If as_jumin.Value = "" Then
        MsgBox "주민등록번호를 입력/확인 바랍니다."
        as_jumin.SetFocus
         Exit Sub
    End If
    
    If as_addr.Value = "" Then
        MsgBox "주소를 입력/확인 바랍니다."
        as_addr.SetFocus
         Exit Sub
    End If
        
    If as_dept.Value = "" Then
        MsgBox "소속을 입력/확인 바랍니다."
        as_dept.SetFocus
         Exit Sub
    End If
    
    If as_grade.Value = "" Then
        MsgBox "직급을 입력/확인 바랍니다."
        as_grade.SetFocus
         Exit Sub
    End If
        
    If as_indate.Value = "" Then
        MsgBox "입사일을 입력/확인 바랍니다."
        as_indate.SetFocus
         Exit Sub
    End If
            
    If as_years.Value = "" Then
        MsgBox "근속년수을 입력/확인 바랍니다."
        as_years.SetFocus
         Exit Sub
    End If
                   
    Cells(lastrow, 1) = as_sabun.Value '사번
    Cells(lastrow, 2) = as_name.Value '성명
    Cells(lastrow, 3) = as_jumin.Value '주민등록번호
    Cells(lastrow, 4) = as_addr.Value '주소
    Cells(lastrow, 5) = as_dept.Value '부서
    Cells(lastrow, 6) = as_grade.Value '직급
    Cells(lastrow, 7) = as_indate.Value '입사일
    Cells(lastrow, 8) = as_years.Value  '근속년수
    
    CmdNew_Click  '초기화 함수호출 - 실행

End If

위부분을 추가하여 모든 항목이 입력이 안되면 엑셀 시트에 추가 작업이 안되게 됩니다.

또한 초기화 함수를 만들어서 초기화 해줍니다.


Private Sub CmdNew_Click()
    as_sabun = ""
    as_name = ""
    as_jumin = ""
    as_addr = ""
    as_dept = ""
    as_grade = ""
    as_indate = ""
    as_years = ""
    as_sabun.SetFocus  '사번에 마우스 위치한다.

End Sub

 

정상적인 입력이 되면 초기화 작업이 진행 됩니다.

이렇게 필수 입력사항을  프로그램내에서 검증작업을 하도록 해주면 오류를 줄일 수 있습니다.

다음에는 수정작업을 알아보겠습니다.

엑셀매크로_사용자정의폼_데이터입력_확인_예제.xlsm
0.04MB

댓글