지난 포스팅에서 유저폼을 만들고 코드는 따로 설명하지 않아서 이번 포스팅에서 코드에 대한 설명을 이어갈까 합니다.
이전 포스팅은 아래의 링크를 참조해 주세요.
이전 포스팅에서 DB접속 모듈과 로그인 폼을 불러오는 모듈을 작성 했습니다.
이번 포스팅은 로그인 유저폼 내부의 코드입니다.
더보기
Option Explicit
Sub Userform_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'PURPOSE: Reset Userform buttons to Inactive Status
CancelButtonInactive.Visible = True
OKButtonInactive.Visible = True
End Sub
Sub CancelButtonInactive_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'PURPOSE: Make Cancel Button appear Green when hovered on
CancelButtonInactive.Visible = False
OKButtonInactive.Visible = True
End Sub
Sub OKButtonInactive_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'PURPOSE: Make OK Button appear Green when hovered on
CancelButtonInactive.Visible = True
OKButtonInactive.Visible = False
End Sub
Private Sub txtID_Enter()
If Me.txtID.Value = "아이디를 입력하세요" Then
Me.txtID.Value = ""
Me.txtID.ForeColor = RGB(51, 51, 51) ' HEX: #33333
End If
End Sub
Private Sub txtID_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.txtID.Value = "" Then
Me.txtID.Value = "아이디를 입력하세요"
Me.txtID.ForeColor = RGB(128, 128, 128) ' HEX: #808080
End If
End Sub
Private Sub txtPW_Enter()
If Me.txtPW.Value = "비밀번호를 입력하세요" Then
Me.txtPW.Value = ""
Me.txtPW.ForeColor = RGB(51, 51, 51) ' HEX: #33333
Me.txtPW.PasswordChar = "*"
End If
End Sub
Private Sub txtPW_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'엔터키 눌렀을때
If KeyCode = vbKeyReturn Then
Call Login_Verification
End If
End Sub
Private Sub txtPW_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.txtPW.Value = "" Then
Me.txtPW.Value = "비밀번호를 입력하세요"
Me.txtPW.ForeColor = RGB(128, 128, 128) ' HEX: #808080
Me.txtPW.PasswordChar = ""
End If
End Sub
Private Sub OkButton_Click()
Call Login_Verification
End Sub
Private Sub CancelButton_Click()
Unload Me
End Sub
Sub Login_Verification()
Dim myUser As String, myPass As String
Dim myPerm As String
myUser = Me.txtID.Value
myPass = Me.txtPW.Value
' 오류처리
If myUser = "아이디를 입력하세요" Or myUser = "" Then MsgBox "아이디를 입력해주세요.": Exit Sub
If myPass = "비밀번호를 입력하세요" Or myPass = "" Then MsgBox "비밀번호를 입력해주세요.": Exit Sub
Call Connect_DB
Call Connect_Table("user", myUser) '테이블명, username
rs.Find ("username LIKE '" & myUser & "'")
If rs.EOF Then '//찾는값이 없을경우
MsgBox "등록된 아이디가 없습니다. ", vbInformation
Me.txtID.SetFocus
Exit Sub
End If
rs.Find ("password LIKE '" & myPass & "'")
If rs.EOF Then '//찾는값이 없을경우
MsgBox "비밀번호가 틀립니다. ", vbInformation
Me.txtPW.SetFocus
Exit Sub
End If
USERNAME = rs.Fields("username")
rs.Close
Unload Me
End Sub
Sub Connect_Table(tblName As String, sqlWhere As String)
Set rs = Nothing
Set rs = New Recordset
If sqlWhere <> "" Then
tblName = tblName & " WHERE username LIKE '" & sqlWhere & "'"
End If
rs.CursorLocation = adUseClient
rs.Open "SELECT * FROM " & tblName, Cn, adOpenStatic, adLockOptimistic
End Sub
전체 코드는 위와 같습니다. 지난 포스팅의 유저폼안에 포함되어 있습니다.
Sub Userform_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'PURPOSE: Reset Userform buttons to Inactive Status
CancelButtonInactive.Visible = True
OKButtonInactive.Visible = True
End Sub
Sub CancelButtonInactive_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'PURPOSE: Make Cancel Button appear Green when hovered on
CancelButtonInactive.Visible = False
OKButtonInactive.Visible = True
End Sub
Sub OKButtonInactive_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'PURPOSE: Make OK Button appear Green when hovered on
CancelButtonInactive.Visible = True
OKButtonInactive.Visible = False
End Sub
먼저 이부분의 코드는 로그인 버튼과 취소 버튼위에 마우스를 올렸을때 흰색 배경의 이미지를 보이지 않게 하고 하늘색 배경의 이미지를 보이게 해서 요즘 스타일의 버튼으로 변경해주는 코드입니다.
Private Sub txtID_Enter()
If Me.txtID.Value = "아이디를 입력하세요" Then
Me.txtID.Value = ""
Me.txtID.ForeColor = RGB(51, 51, 51) ' HEX: #33333
End If
End Sub
Private Sub txtID_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.txtID.Value = "" Then
Me.txtID.Value = "아이디를 입력하세요"
Me.txtID.ForeColor = RGB(128, 128, 128) ' HEX: #808080
End If
End Sub
Private Sub txtPW_Enter()
If Me.txtPW.Value = "비밀번호를 입력하세요" Then
Me.txtPW.Value = ""
Me.txtPW.ForeColor = RGB(51, 51, 51) ' HEX: #33333
Me.txtPW.PasswordChar = "*"
End If
End Sub
Private Sub txtPW_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.txtPW.Value = "" Then
Me.txtPW.Value = "비밀번호를 입력하세요"
Me.txtPW.ForeColor = RGB(128, 128, 128) ' HEX: #808080
Me.txtPW.PasswordChar = ""
End If
End Sub
위의 코드는 아이디, 패스워드 입력창의 글자색을 들어가고 나갈때 각각 변경해주고, 내용을 변경해주는 코드입니다.
Private Sub txtPW_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'엔터키 눌렀을때
If KeyCode = vbKeyReturn Then
Call Login_Verification
End If
End Sub
Private Sub OkButton_Click()
Call Login_Verification
End Sub
Private Sub CancelButton_Click()
Unload Me
End Sub
위의 코드는 로그인 버튼, 취소 버튼 클릭시 이벤트를 지정해 주었으며, 패스워드 텍스트박스에서 엔터키를 눌렀을때 로그인 버튼을 누르는것과 같은 이벤트를 실행해 주도록 만들었습니다.
Sub Login_Verification()
Dim myUser As String, myPass As String
Dim myPerm As String
myUser = Me.txtID.Value
myPass = Me.txtPW.Value
' 오류처리
If myUser = "아이디를 입력하세요" Or myUser = "" Then MsgBox "아이디를 입력해주세요.": Exit Sub
If myPass = "비밀번호를 입력하세요" Or myPass = "" Then MsgBox "비밀번호를 입력해주세요.": Exit Sub
Call Connect_DB
Call Connect_Table("user", myUser) '테이블명, username
rs.Find ("username LIKE '" & myUser & "'")
If rs.EOF Then '//찾는값이 없을경우
MsgBox "등록된 아이디가 없습니다. ", vbInformation
Me.txtID.SetFocus
Exit Sub
End If
rs.Find ("password LIKE '" & myPass & "'")
If rs.EOF Then '//찾는값이 없을경우
MsgBox "비밀번호가 틀립니다. ", vbInformation
Me.txtPW.SetFocus
Exit Sub
End If
USERNAME = rs.Fields("username")
rs.Close
Unload Me
End Sub
Sub Connect_Table(tblName As String, sqlWhere As String)
Set rs = Nothing
Set rs = New Recordset
If sqlWhere <> "" Then
tblName = tblName & " WHERE username LIKE '" & sqlWhere & "'"
End If
rs.CursorLocation = adUseClient
rs.Open "SELECT * FROM " & tblName, Cn, adOpenStatic, adLockOptimistic
End Sub
마지막으로 로그인을 직접적으로 실행하는 코드입니다. DB의 user 테이블에서 username과 password를 읽어와 입력된 값과 비교후 로그인을 시켜주는 코드입니다.
제 포스팅은 강의가 주가되는 포스팅은 아닙니다. 저도 대부분의 코드를 가지고와서 사용하기때문에 코드의 사용법에 대한 설명을 하는 블로그라고 생각해 주시면 감사하겠습니다.
이번 포스팅은 여기까지입니다.
'엑셀 vba > 발주관리' 카테고리의 다른 글
매입처 관리폼 #3 Listview 데이터 채우기 (0) | 2021.02.09 |
---|---|
매입처 관리폼 #2 테이블 생성 (0) | 2021.02.09 |
매입처 관리폼 #1 라벨을 이용한 버튼 만들기 & Listview (0) | 2021.02.08 |
유저폼 만들기 #3 테이블 생성 (0) | 2021.02.04 |
로그인 만들기 #1 로그인 유저폼 만들기 (0) | 2021.01.31 |