메뉴
VBA 프로젝트 강의

[네이버로그인유저폼] 유저폼 설정하기

오빠두엑셀 by 오빠두엑셀
  • 학습시간 13분
  • 작성일 2018.05.18
  • 조회수 1.2만회

엑셀 VBA 유저폼 동작 설정하기! - Userform 설정

이 강의에서는 앞서 제작한 네이버·구글·다음 자동로그인 유저폼에 실제 동작을 부여하는 과정을 다룹니다. 옵션버튼 Click 이벤트로 포털별 화면을 전환하는 방법부터 Me 키워드와 Visible 속성 활용, 텍스트박스 초기화와 SetFocus 자동 포커싱, MsgBox 출력, Unload Me 종료 처리까지 유저폼 운영에 필요한 핵심 명령문을 단계별로 정리합니다.

[네이버로그인유저폼] 유저폼 설정하기
DOWNLOADS

실습자료를 준비했어요

수업에서 사용한 예제 파일과 보충 자료를 한 곳에 정리했습니다!👇

1. 매크로 활성화 체크

예제파일을 새로 다운로드하신 경우, 해당 파일은 매크로가 포함되어 있으므로 파일을 열고 상단의 [매크로 활성화] 버튼을 반드시 클릭해주세요.

2. 옵션버튼 편집하기

사용자가 각 옵션버튼을 클릭할 때마다 해당 포털사이트의 커맨드버튼이 나타나도록, 각 옵션버튼에 Click 이벤트 명령문을 작성합니다.

네이버 로그인, 구글 로그인, 다음 로그인에 해당하는 세 개의 옵션버튼이 의도한 동작으로 분기되도록 아래 코드를 유저폼 모듈 안에 그대로 입력해주세요.

엑셀 VBA 네이버 구글 자동로그인 유저폼 만들기 1

Private Sub optNaver_Click()
 
Me.btnNaver.Visible = True
Me.btnDaum.Visible = False
Me.btnGoogle.Visible = False
 
End Sub
 
Private Sub optGoogle_Click()
 
Me.btnNaver.Visible = False
Me.btnDaum.Visible = False
Me.btnGoogle.Visible = True
 
End Sub
 
Private Sub optDaum_Click()
 
Me.btnNaver.Visible = False
Me.btnDaum.Visible = True
Me.btnGoogle.Visible = False
 
End Sub
2-A. 사용자정의폼에서 '컨트롤이름_이벤트종류' 로 명령문 작성

유저폼 모듈(유저폼에서 동작하는 명령문의 집합) 안에서 명령문 이름을 '컨트롤이름_이벤트종류' 형식으로 지정하면, 해당 컨트롤에서 지정한 이벤트가 발생했을 때 입력한 코드가 자동으로 실행됩니다.

엑셀 VBA 네이버 구글 자동로그인 유저폼 만들기 2

각 컨트롤마다 사용 가능한 이벤트 종류는 매우 다양하며, 일부 이벤트는 특정 컨트롤에서만 활성화됩니다. 현재 유저폼에 배치된 컨트롤 목록은 VBE 화면 왼쪽 상단에서, 선택한 컨트롤이 지원하는 이벤트 목록은 오른쪽 상단에서 확인할 수 있습니다.

각 컨트롤별로 자주 사용되는 이벤트와 활용 방법은 새로운 내용이 등장할 때마다 강의에서 하나씩 자세히 설명해드리겠습니다.

엑셀 VBA 네이버 구글 자동로그인 유저폼 만들기 12

2-B. 사용자정의폼(유저폼) Me의 사용법

유저폼 모듈에서 명령문을 작성할 때, 해당 유저폼에 포함된 컨트롤(옵션버튼, 커맨드버튼, 콤보박스 등)을 간편하게 참조하기 위해 Me 키워드를 사용할 수 있습니다.

Me를 입력한 뒤 점(.)을 입력하면 현재 유저폼에 정의된 함수와 속성뿐 아니라 유저폼에 배치된 컨트롤 이름 목록까지 아래 화면처럼 자동완성으로 손쉽게 불러올 수 있습니다.

엑셀 VBA 네이버 구글 자동로그인 유저폼 만들기 5

2-C. 유저폼 visible 사용법

유저폼 컨트롤의 Visible 속성을 사용하면 해당 컨트롤을 화면에 보이게 할지, 또는 숨길지 여부를 제어할 수 있습니다.

예를 들어 OptionButton.Visible = False 로 설정하면 해당 옵션버튼은 유저폼 화면에 표시되지 않습니다. 단, Visible 값을 False 로 지정하더라도 화면상에서만 보이지 않을 뿐(투명 상태) 컨트롤 자체는 내부적으로 그대로 존재하므로, 숨겨진 컨트롤에 정의된 다른 이벤트는 정상적으로 실행됩니다.

엑셀 VBA 네이버 구글 자동로그인 유저폼 만들기 6

3. 유저폼 초기화 상태 편집하기

사용자가 유저폼을 처음 실행했을 때 보다 편리하게 사용할 수 있도록, 유저폼의 초기 상태를 미리 설정해줍니다.

먼저, 유저폼이 실행되는 시점에 가장 자주 사용하는 포털사이트가 기본값으로 선택되도록 명령문을 입력합니다.

'################################
'자주사용하는 포털사이트의 옵션버튼 값을 체크해줍니다.
'################################
 
Me.optNaver.Value = True

다음으로, 사용자가 유저폼을 실행하는 동시에 별도의 마우스 조작 없이 곧바로 아이디와 비밀번호를 입력할 수 있도록, ID 입력용 텍스트박스에 포커스가 자동으로 잡히도록 설정해줍니다.

'################################
'아이디 텍스트박스에 포커싱을 잡아줍니다.
'################################
Me.txtID.SetFocus
3-A. 사용자의 편의를 위한 SetFocus 의 중요성

반복적인 업무를 처리하는 직장인에게 '1초, 2초'의 시간 단축은 결과적으로 큰 효율 차이를 만들어 냅니다. 사용자정의폼(유저폼)을 활용하는 가장 큰 이유 중 하나가 바로 '반복 업무의 자동화'인 만큼, 사용자 편의성에 관한 설정은 매우 중요합니다.

유저폼 VBA 코드 곳곳에 SetFocus 를 적절히 배치해두면 사용자가 유저폼을 사용할 때 마우스 이동을 최소화할 수 있어 작업 시간을 효과적으로 단축할 수 있습니다.

엑셀 VBA 네이버 구글 자동로그인 유저폼 만들기 7

4. 아이디와 비밀번호를 입력하는 텍스트상자 초기화 설정하기

대부분의 사용자는 포털사이트별로 서로 다른 아이디와 비밀번호를 사용합니다. 따라서 네이버 로그인에서 구글 로그인 등으로 옵션버튼을 변경(=로그인 대상 포털사이트를 변경)했을 때 이전에 입력한 값이 그대로 남아 있지 않도록, 아이디와 비밀번호 텍스트박스를 초기화하는 명령문을 만들어줍니다.

아래 코드를 복사해 유저폼 모듈에 붙여넣어 주세요.

Sub Clear_txt()
 
Me.txtID = ""
Me.txtPW = ""
 
End Sub

코드를 붙여넣었다면, 앞서 작성한 옵션버튼의 Click 이벤트 안에 Clear_txt 명령문 호출을 각각 추가합니다. (이 부분이 어렵게 느껴진다면 영상 강의를 함께 참고해주세요!)

Private Sub optNaver_Click()
 
Me.btnNaver.Visible = True
Me.btnDaum.Visible = False
Me.btnGoogle.Visible = False
 
Clear_txt
 
End Sub
4-A. Private Sub 과 Sub 의 차이점 (Private Sub vs Public Sub vs Sub)

유저폼에서 사용하는 명령문은 접근 범위에 따라 크게 두 가지로 나뉩니다. 하나는 Private (제한된 범위 안에서만 호출 가능한)이고, 다른 하나는 Public (어디서든 호출 가능한)입니다. (참고로 VBA에서 Public Sub 과 Sub 은 동일하게 동작합니다.)

명령문을 Private 으로 선언하면 해당 명령문이 작성된 모듈 내부에서만 호출·실행할 수 있습니다. 하나의 파일에 여러 모듈이 존재할 때 명령문 간 이름 충돌을 방지하는 데 유용하지만, 일반적인 매크로는 대부분 Public 으로 작성하고 유저폼처럼 특수한 경우에만 Private 으로 선언합니다.

Private 과 Public 의 차이점은 다른 오빠두엑셀 VBA 기초강좌에서도 자주 다루고 있으니 함께 살펴보면 도움이 됩니다.

엑셀 VBA 네이버 구글 자동로그인 유저폼 만들기 8

5. 입력된 아이디와 비밀번호 관리하기

아래 코드를 복사해 유저폼 모듈에 붙여넣어 주세요.

Sub Get_ID_PW()
 
MsgBox "입력하신 아이디는 " & Me.txtID.Value & " 입니다." & vbNewLine _
& "입력하신 비밀번호는 " & Me.txtPW.Value & " 입니다."
 
End Sub

코드를 붙여넣었다면, Get_ID_PW 명령문 호출을 각 커맨드버튼의 Click 이벤트 안에 추가해줍니다.

Private Sub btnDaum_Click()
 
Get_ID_PW
 
End Sub
 
Private Sub btnGoogle_Click()
 
Get_ID_PW
 
End Sub
 
Private Sub btnNaver_Click()
 
Get_ID_PW
 
End Sub
5-A. 엑셀 VBA에서 msgbox 사용법

유저폼에서 메시지박스(MsgBox)를 띄우는 방법은 매우 간단합니다. (물론 MsgBox 함수의 인자값을 활용하면 다양한 동작을 추가로 지정할 수 있으며, 이에 대한 상세 내용은 이후 MsgBox 고급 강의에서 다루겠습니다.)

메시지박스는 별도의 설정 없이도 아래와 같이 한 줄로 간편하게 사용할 수 있습니다.

'############################
'엑셀 VBA msgbox 초간단 사용법
'############################
Msgbox “원하는 내용 입력”

VBA에서는 큰따옴표(" ")로 감싼 값을 '직접 입력한 텍스트 값'으로 인식합니다.

예를 들어 유저폼의 '아이디 텍스트박스'에서 입력 값을 불러오는 경우, 그 값은 '직접 입력한 텍스트'가 아니라 '텍스트박스가 가진 값을 코드로 참조한 결과'입니다. 이때 텍스트박스에서 가져오는 값까지 큰따옴표 안에 함께 넣어버리면 VBA는 모든 문자를 일반 텍스트로 해석하기 때문에, '텍스트박스의 값'이 아니라 'me.txtID.Value' 라는 코드 문자 자체가 결과로 출력됩니다.

이해를 돕기 위해 새 모듈을 하나 추가한 뒤, 아래 코드를 모듈 안에 붙여넣고 실제로 실행해보겠습니다.

엑셀 VBA 네이버 구글 자동로그인 유저폼 만들기 9

'############################
'vba 텍스트 입력방법의 이해
'############################
Sub Msgbox_Test()
 
Dim Str As String
Str = "오빠두"                                              ‘str은 텍스트로 불려질 값
MsgBox "안녕하세요. " & Str & "입니다."    ‘#안녕하세요# 와  #입니다# 는 직접 입력한 텍스트
			           ‘만약 “안녕하세요. “ & “Str” & “입니다.” 를 입력할 경우 -> “안녕하세요. Str입니다.” 가 메시지박스에 출력됨. 즉 Str을 직접 입력한 텍스트로 인식함.
 
End Sub

6. 모든 작업 완료 후 유저폼 종료하기

입력한 아이디와 비밀번호가 정상적으로 확인되어 메시지박스가 출력되었다면(=실제 환경이라면 포털사이트 로그인이 완료되었다면), 유저폼이 자동으로 닫히도록 종료 코드를 추가합니다.

엑셀 VBA 네이버 구글 자동로그인 유저폼 만들기 11

각 커맨드버튼의 Click 이벤트 명령문 안에 Unload Me 함수를 아래와 같이 추가해주세요.

'############################
'엑셀 VBA Unload Me 사용법
'############################
Private Sub btnDaum_Click()
 
Get_ID_PW
 
Unload Me
 
End Sub
댓글 2
4.5 (2개 평가)
좋은친구
좋은친구 2020.04.28 03:14
강의 1편부터 천천히 학습하고있습니다
강민준🤗
강민준🤗 2024.08.09 11:15
유익한 강의 감사합니다🙇‍♂️
스크랩 완료