엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 2부

엑셀(Excel)/VBA

엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 2

 

환경 : Microsoft Excel 2010

 

이번예제는 1부에 이어서 사용자정의 폼으로 로그인 기능을 구현하게 되는데 소스부분에 대한 설명을 이어 갈 것입니다. 이전에 만들어 두었던 시트에 로그인 정보가 있으므로 그 정보를 가져와 폼에 입력한 값과 비교해 로그인이 가능한지 안한지 판단하는 것이죠.

 

로그인을 확인하는 소스는 아래와 같습니다. 먼저 [사용자정보] 시트에 있는 값들을

Sheets("사용자정보").Range("A3:C6") 이용해 가져옵니다. 그리고 Vlookup 함수를 이용해 id 에 해당하는 행을 찾고 찾아진 아이디의 행에서 2번쨰 열, 3번째 열의 값을 가져옵니다. 2번째 열의 값은 패스워드가 되고 3번째 열은 이름에 해당하는 값이 되것죠. 폼에서 값을 가져올때는 Me 개체를 사용하면 됩니다. Me 는 현재 떠있는 폼을 나타냅니다. 폼에 컨트롤을 배치하고 각각의 이름을 정했는데 그 이름 속성을 적으면 폼에 입력한 값이 리턴됩니다.

 

Private Sub btnConfirm_Click()

   

    Dim loginData As Range

    Dim pwd As String

    Dim name As String

       

    Set loginData = Sheets("사용자정보").Range("A3:C6")

On Error Resume Next

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

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

   

    '' VLookup 에서 찾지 못했을때 이부분을 타게됨

    If Err.Number <> 0 Then

        MsgBox "해당 ID 가 존재하지 않습니다.\n 다시 확인해주세요", vbCritical, "ID 오류"

        Exit Sub

    End If

   

    '' 패스워드 확인

    If pwd = Trim(Me.txtPwd) Then

        MsgBox "로그인 성공하였습니다.", vbInformation, "로그인확인"

    Else

        MsgBox "암호가 일치하지 않습니다.", vbCritical, "패스워드 오류"

    End If

   

End Sub

 

On Error Resume Next 가 있는 것은 Vlookup 으로 아이디를 찾지 못하면 에러가 나는데 에러날 때 아이디를 못 찾았다고 메시지를 뿌리기 위함입니다. 뿌리는 위치는 If Err.Number <> 0 Then 영역입니다. 해당하는 ID 가 없을 때 아래와 같이 메시지를 뿌려 주게 되는것이죠.

 

 

btnConfirm_Click() 함수를 실행했을 때 패스워드와 아이디를 정확하게 입력하게 되면 아래와 같이 성공메시지를 띄웁니다.

 

 

다음은 [종료] 버튼을 클릭했을 때 창을 닫는 기능을 넣어 보도록 하겠습니다. 창을 닫기 위해 Unload 문을 사용하는데 폼을 닫기 위해 Unload Me 쓰면 됩니다. Me 는 현재 떠 있는 폼을 나타냅니다. 그리고 창을 닫을 때 두가지 명령어가 있는데 Unload End 가 그것입니다. 차이점은 Unload 현재 떠 있는 폼만 닫지만 End 는 모든 열려있는 폼을 닫게 됩니다.

 

 

3부에서는 엑셀파일이 뜰 때 로그인 폼을 보여주고 아이디 패스를 입력하게 하는 기능을 기술합니다.

Posted by 녹두장군