엑셀 로그인 시스템 관련 (3번 시도시 파일 강제종료부분)

VBA
작성자
지아
작성일
2021-07-23 22:42
조회
283
엑셀버전 : 엑셀2016

운영체제 : 윈도우10


원래는 엑셀파일로 직접 올리고 싶었는데

사정상 다른 회원분들의 개인정보가 들어있어서

올리진 못했구요.

 

엑셀 로그인 시스템 구축, 사용자별 시트 관리까지 한번에! :: 완성파일제공

[엑셀 로그인 기능 만들기]

 

여기 링크 속의 다른 명령문들은 다 제대로 작동이 되는데

이상하게 '3번 로그인시 엑셀파일 자동종료 기능'만 작동이 안됩니다

 

이렇게 3회 이상 잘못되어 프로그램을 종료한다는 안내문까진 메세지박스로 뜨는데

엑셀 파일이 바로 꺼지질 않네요

 

아래는 제가 vb프로시저에 삽입한 명령어고

크게 가르쳐주신 양식을 수정하진 않았습니다

혹시 문제가 있다면 피드백 부탁드려요!

 

 

  1. 현재 통합문서 시트 (작성한 명령어 그대로)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 
Cancel = CloseWB(, True)
 
End Sub
Private Sub Workbook_Open()
 
Attempt = 3
show_formLogin
 
End Sub

 

 

2. frm_Login 폼 내부 명령어

Sub Login_Verification()
 
' 아이디와 비밀번호가 사용자정보시트에 존재하는지 확인 (일치하는지)
Dim EndRow As Long  '마지막 행
Dim i As Long       'For문 변수
 
' 오류처리
If Me.txtID.Value = "아이디를 입력하세요" Then MsgBox "를 입력해주세요.": Exit Sub
If Me.txtPW.Value = "비밀번호를 입력하세요" Then MsgBox "비밀번호를 입력해주세요.": Exit Sub
 
With shtUser
 
EndRow = .Cells(.Rows.Count, 1).End(xlUp).Row
 
For i = 2 To EndRow
        If .Cells(i, 1).Value = Me.txtID.Value And .Cells(i, 2) = Me.txtPW.Value Then
        Login_Success
        MsgBox .Cells(i, 3).Value & "님 로그인 확인" & vbNewLine & _
                    "접속시간 :" & Format(Now(), "yyyy년 mm월 dd일 hh시 mm분")
        Unload Me
 
        Exit Sub
 
        End If
 
Next
 
Attempt = Attempt - 1
 
If Attempt > 0 Then
    '로그인 실패
    MsgBox "존재하지 않는 아이디 또는 비밀번호가 잘못되었습니다." & vbNewLine & _
            "남은 횟수 : " & Attempt & "회"
Else
    MsgBox "아이디 또는 비밀번호가 3회이상 잘못되어 프로그램을 종료합니다."
    blnClose = True '강제종료
    CloseWB False
End If
 
End With
 
End Sub

 

 

 

   3. 일반 모듈에 넣은 명령어

 

Public Attempt As Long
 
 
Public blnClose As Boolean
 
Function CloseWB(Optional SaveChanges As Boolean = True, Optional DisplayAlert As Boolean = False) As Boolean
 
Dim WB As Workbook
Dim i As Long
Dim vbYN As VbMsgBoxResult
 
Application.DisplayAlerts = False
 
Logout
 
If blnClose = False Then
 
    If DisplayAlert = True Then
 
        vbYN = MsgBox("'" & ThisWorkbook.Name & "' 의 변경내용을 저장하시겠습니까?", vbYesNoCancel)
 
        If vbYN = vbNo Then SaveChanges = False: blnClose = True
        If vbYN = vbYes Then SaveChanges = True: blnClose = True
        If vbYN = vbCancel Then blnClose = False: GoTo Finally
 
    End If
 
    For Each WB In Application.Workbooks
        If WB.Name <> "PERSONAL.XLSB" Then i = i + 1
    Next
 
    If i = 1 Then
        If SaveChanges = True Then
            ThisWorkbook.Save
            Application.EnableEvents = False
            Application.Quit
        Else
            ThisWorkbook.Saved = True
            Application.EnableEvents = False
            Application.Quit
        End If
    Else
        If SaveChanges = True Then
            ThisWorkbook.Save
            ThisWorkbook.Close
        Else
            ThisWorkbook.Saved = True
            ThisWorkbook.Close
        End If
    End If
 
End If
 
CloseWB = False
Application.DisplayAlerts = True
 
Exit Function
 
Finally:
Application.DisplayAlerts = True
CloseWB = True
 
End Function
 
Sub Logout()
 
Dim WS As Worksheet
 
shtLogin.Visible = xlSheetVisible
 
For Each WS In ThisWorkbook.Worksheets
    If WS.Name <> "로그인" Then WS.Visible = xlSheetVeryHidden
Next
 
End Sub
 
Sub show_formLogin()
 
formLogin.Show
 
 
End Sub

 

 

여기부터 아래는 제가 고민해보았던 것인데

혹시나 싶어서 건의나 문의의 일부로 여쭤보는 것이에요.

홈페이지 속 양식으로 올려주신 명령문과

20년 5월에 올라온 영상 속 명령문이

약간의 차이가 있는 것 같아서

혹시 그 것때문에

'3번 아이디 & 비번 오류시 파일 종료' 기능에

문제가 생기는 것인지도 확인부탁드립니다.

 

 

홈페이지에서는 이 부분을 다른 부분과 같이 '일반 모듈'에 넣으라고 말씀해주셨지만

 

영상속에서는 이부분을 따로 떼어내어 현재 통합문서 모듈에 넣으셨었더라고요.

그리고 홈페이지 양식 속에는

'영상속 현재 통합문서 모듈'에 있는 첫번째 양식을 합쳐서

두번째 양식이라고 말씀하신 (아래 명령문을)

같이 '일반 모듈'에 모두 넣으셨구요

 

 ---------------------------------------------------------
' 일반 모듈에 추가합니다.
' ---------------------------------------------------------
Public blnClose As Boolean
 
<span style="color: #3366ff;">Function CloseWB(Optional SaveChanges As Boolean = True, Optional DisplayAlert As Boolean = False) As Boolean
 
Dim WB As Workbook
Dim i As Long
Dim vbYN As VbMsgBoxResult
 
Application.DisplayAlerts = False
 
Logout
 
If blnClose = False Then
 
    If DisplayAlert = True Then
 
        vbYN = MsgBox("'" & ThisWorkbook.Name & "' 의 변경내용을 저장하시겠습니까?", vbYesNoCancel)
 
        If vbYN = vbNo Then SaveChanges = False: blnClose = True
        If vbYN = vbYes Then SaveChanges = True: blnClose = True
        If vbYN = vbCancel Then blnClose = False: GoTo Finally
 
    End If
 
 
 
<span style="color: #000000;">[파란명령어 부분]</span>
--------------------------------------------------------------------------------------------------------------
</span><span style="color: #000000;">[빨간명령어 부분]</span>
 
 
<span style="color: #ff0000;">
 
For Each WB In Application.Workbooks
        If WB.Name <> "PERSONAL.XLSB" Then i = i + 1
    Next
 
    If i = 1 Then
        If SaveChanges = True Then
            ThisWorkbook.Save
            Application.EnableEvents = False
            Application.Quit
        Else
            ThisWorkbook.Saved = True
            Application.EnableEvents = False
            Application.Quit
        End If
    Else
        If SaveChanges = True Then
            ThisWorkbook.Save
            ThisWorkbook.Close
        Else
            ThisWorkbook.Saved = True
            ThisWorkbook.Close
        End If
    End If
 
End If
 
CloseWB = False
Application.DisplayAlerts = True
 
Exit Function
 
Finally:
Application.DisplayAlerts = True
CloseWB = True
 
End Function
 
Sub Logout()
 
Dim WS As Worksheet
 
shtLogin.Visible = xlSheetVisible
 
For Each WS In ThisWorkbook.Worksheets
    If WS.Name <> "로그인" Then WS.Visible = xlSheetVeryHidden
Next
 
End Sub</span>

설명이 복잡하시죠 ;;;;;

다시 정리드리자면 위의 파란 명령어와 빨간 명령어

(------------------------ 점선 위 (파란 명령어) / 아래 부분 (빨간 명령어) ---------------------------)

영상 속에서는 ' 통합문서 모듈'에는 파란 명령어'일반 모듈'에서는 빨간 명령어

이렇게 나누어서 넣으셨는데

홈페이지 양식 상에서는 빨간 명령어파란명령어모두 합쳐서

'일반 모듈'에 함께 넣으셨고 명령어의 순서와 내용도 조금 바뀐 것 같아서

이 것이 '파일종료'가 실행되지 않는 원인에 포함되어 있는지를 여쭌 것입니다..

보니까 홈페이지 댓글에 저처럼 비번, 직원번호(아디) 3번 오류시 엑셀파일 종료가 되지 않는다는

의견이 많아서요 ㅠㅠ

 

 

혹시 나중에 보시고

맨 앞 제 명령어에 문제가 있다면 꼭 피드백 주시고

혹은 아래 제가 건의한 부분에 문제가 있다면

이후 양식 업데이트에 반영되었으면 좋겠습니다

어느쪽이든 의견 주시면 감사합니다..

혹시 답답한 부분이 있더라도 양해부탁드려요

제가 엑셀 관련해서는 딱 컴퓨터 활용능력 1급 수준으로만 알아서요..ㅠㅠ

회원등급 : 씨앗등급
포인트 : 24 EP
총질문 : 1 개 (마감율 : 0%)
채택답변 : 0 개
전체 1

  • 2021-07-26 16:28

    안녕하세요.

    혹시 비밀번호 3회 잘못 입력 후 파일이 종료되지 않는다면, 로그인 유저폼 명령문 중, 아래 체크해드린 부분에 중단점을 설정 한 뒤 CloseWB 명령문이 올바르게 동작하는지 한번 디버깅해보시겠어요?

    키보드 F9키를 누르면 중단점 설정, F8키를 누르면 단계별로 실행할 수 있습니다. 디버깅에 대한 자세한 설명은 아래 페이지를 한번 확인해보세요 🙂

    엑셀 VBA 디버깅 (오류 처리) 모든 방법 - 핵심 정리


전체 4,022
번호 카테고리 제목 작성자 작성일 추천 조회
4006 피벗테이블
New 피벗테이블에서 '값 행 표시' 질문드립니다. 첨부파일
월마리아 | 01:01 | 추천 0 | 조회 6
월마리아 01:01 0 6
4005 VBA
New 네이버 쇼핑 댓글 가져오기
아가늑대 | 2021.09.22 | 추천 0 | 조회 20
아가늑대 2021.09.22 0 20
4004 기능/도구
New 엑셀 비활성화된 링크들 활성방법
N솔 | 2021.09.22 | 추천 0 | 조회 22
N솔 2021.09.22 0 22
4003 함수/공식
New (수정 재업로드) 질문 다시 올립니다! (9) 답변완료
치운 | 2021.09.22 | 추천 0 | 조회 22
치운 2021.09.22 0 22
4002 함수/공식
New 다음과 같이 하려면 어떤 함수를 써야할까요? 아니면 노가다해야하나요? (7)
치운 | 2021.09.22 | 추천 0 | 조회 29
치운 2021.09.22 0 29
4001 VBA
New Change이벤트관련 문의사항 첨부파일 (1)
H.B | 2021.09.22 | 추천 0 | 조회 25
H.B 2021.09.22 0 25
4000 함수/공식
New TEXTJOIN 표시 형식 (1)
제비제비 | 2021.09.22 | 추천 0 | 조회 27
제비제비 2021.09.22 0 27
3999 문서서식
New 특정이름 행에서 서식 설정(식 오류 관련 질문) (1)
sjdlj | 2021.09.22 | 추천 0 | 조회 20
sjdlj 2021.09.22 0 20
3998 VBA
New Ctrl+F 시트에 넣고 싶습니다. (2)
ㅋㅋㅋㅋ | 2021.09.21 | 추천 0 | 조회 32
ㅋㅋㅋㅋ 2021.09.21 0 32
3997 VBA
New VBA 다중페이지(멀티페이지) 페이지를 자동선택할수 있습니까? (2) 답변완료
나두엑셀왕 | 2021.09.21 | 추천 0 | 조회 36
나두엑셀왕 2021.09.21 0 36
3996 함수/공식
New 이런건 어떻게해야하나요 ㅠㅠㅠㅠ (1)
김학찬 | 2021.09.21 | 추천 0 | 조회 41
김학찬 2021.09.21 0 41
3995 기능/도구
New 맥용 엑셀에서 필터 선택항목 체크박스 무슨 키로 선택하시나요?
치킨카뤠 | 2021.09.21 | 추천 0 | 조회 18
치킨카뤠 2021.09.21 0 18
3994 차트/그래프
New 피벗챠트에 대한 문의 (4) 답변완료
Trimman | 2021.09.21 | 추천 0 | 조회 33
Trimman 2021.09.21 0 33
3993 함수/공식
New 값이 있는 경우 더하세요 는 어떻게 사용해야될까요 ? (10) 답변완료
향기 | 2021.09.21 | 추천 0 | 조회 50
향기 2021.09.21 0 50
3992 VBA
New 수식에 사용자함수가 들어있을때 사용자함수부분만 값으로 치환가능한가요~? (1)
Mindcare | 2021.09.20 | 추천 0 | 조회 43
Mindcare 2021.09.20 0 43
3991 함수/공식
New 다시 질문 드려요.. 엑셀 수식으로 가능한지요? (2)
soo | 2021.09.20 | 추천 0 | 조회 45
soo 2021.09.20 0 45
3990 함수/공식
New 실시간데이터에서 원하는 숫자와 일치한 횟수찾는 엑셀함수는? (2) 답변완료
kumkang**** | 2021.09.20 | 추천 0 | 조회 43
kumkang**** 2021.09.20 0 43
3989 함수/공식
특정기간동안의 입출금내역 다른시트에서 모두 출력어떻게하나요? 첨부파일 (2) 답변완료
ericju**** | 2021.09.20 | 추천 0 | 조회 37
ericju**** 2021.09.20 0 37
3988 함수/공식
조건부서식 관련 문제 (2)
콩콩이0782 | 2021.09.19 | 추천 0 | 조회 39
콩콩이0782 2021.09.19 0 39
3987 VBA
엑셀 재고툴만들기 중 목록박스의 값 복사하기 (1)
나두엑셀왕 | 2021.09.19 | 추천 0 | 조회 22
나두엑셀왕 2021.09.19 0 22
3986 함수/공식
엑셀 함수 계산 절대값 조건 등 질문입니다. 도와주세요 (1)
우나기77 | 2021.09.19 | 추천 0 | 조회 26
우나기77 2021.09.19 0 26
3985 함수/공식
(질문이요) 한가지 조건으로 여러값 불러오기 첨부파일 (3) 답변완료
Rampage | 2021.09.19 | 추천 0 | 조회 37
Rampage 2021.09.19 0 37
3984 함수/공식
어떤 식으로 구성을 해야 할 지 모르겠어요 도와주세요 첨부파일 (1)
욕심없는성공v | 2021.09.19 | 추천 0 | 조회 27
욕심없는성공v 2021.09.19 0 27
3983 함수/공식
실시간 데이터에서 원하는 숫자와 같은면 일치한 횟수를 카운팅하는 함수 (5) 답변완료
kumkang**** | 2021.09.19 | 추천 0 | 조회 56
kumkang**** 2021.09.19 0 56
3982 피벗테이블
(도움바랍니다)한명의 대표가 다수의 사업장을 운영하는 경우 (2)
일랑일랑 | 2021.09.19 | 추천 0 | 조회 46
일랑일랑 2021.09.19 0 46
3981 함수/공식
함수 만들 수 있을까요? (2)
soo | 2021.09.19 | 추천 1 | 조회 44
soo 2021.09.19 1 44
3980 VBA
엑셀 VBA에서 RemoveDuplicates 사용시 '5' 런타임 오류가 발생하여 해결 방법 문의드립니다. (2)
namonamo | 2021.09.19 | 추천 0 | 조회 23
namonamo 2021.09.19 0 23
3979 함수/공식
(도와주세요) INDEX, MATCH 를 통해 만들었는데 많이 무거워요ㅠ 첨부파일 (1)
18 강영순 | 2021.09.19 | 추천 0 | 조회 50
18 강영순 2021.09.19 0 50
3978 VBA
재고관리 툴 만들기 8시간 풀영상 중 목록상자 가시성과 다중페이지에 대해 질문합니다.
나두엑셀왕 | 2021.09.18 | 추천 0 | 조회 27
나두엑셀왕 2021.09.18 0 27
3977 기능/도구
목록 단추 차수 조회를 피벗테이블과 연동해서 총괄표 조회 할때 에러 발생 해결 부탁드려요~~ 첨부파일 (1)
알면서 | 2021.09.18 | 추천 0 | 조회 23
알면서 2021.09.18 0 23