포탈사이트 로그인프로그램 만들기 #2 Copyright 2018 by 오빠두 0
1. 매크로활성화체크홈페이지에서예제파일을직접다운받으신경우, 예제파일은매크로가포함된파일이므로상단에 [ 매크로활성화버튼 ] 을체크해주세요. 2. 옵션버튼편집하기 각옵션버튼을누를때마다, 선택된포탈사이트의커맨드버튼이나타나도록옵션버튼에 Click 이벤트명령문을입혀줍니다. 네이버로그인, 구글로그인, 다음로그인에해당하는각각의옵션버튼에원하는동작이실행될수있도록코드를각각넣어주세요. 컨트롤이름 _ 이벤트종류유저폼모듈 ( 유저폼에서동작하는명령문의집합체 ) 안에서, 컨트롤이름 _ 이벤트종류 로명령문의이름을설정해주면해당하는컨트롤에서선택된이벤트가일어났을때입력한코드가실행됩니다. Private Sub optnaver_click() Me.btnNaver.Visible = True Me.btnDaum.Visible = False Me.btnGoogle.Visible = False Private Sub optgoogle_click() Me.btnNaver.Visible = False Me.btnDaum.Visible = False Me.btnGoogle.Visible = True Private Sub optdaum_click() Me.btnNaver.Visible = False Me.btnDaum.Visible = True Me.btnGoogle.Visible = False Copyright 2018 by 오빠두 1
각컨트롤마다사용할수있는이벤트의종류는다양합니다. 해당유저폼의컨트롤목록은왼쪽상단에서, 이벤트종류의목록은오른쪽상단에서확인할수있습니다. 사용자정의폼 ( 유저폼 ) me 의사용유저폼에서사용하는명령문을작성할시, 해당유저폼의컨트롤 ( 옵션버튼, 커맨드버튼, 콤보박스등 ) 을쉽게불러오기위해서 me 를사용합니다. me 를입력한뒤점 (.) 을입력하시면현재유저폼에해당하는함수, 상태와함께유저폼에사용된다양한컨트롤의이름들을쉽게불러올수있습니다. 컨트롤.visible 사용법해당컨트롤을보이게할지또는안보이게할지를결정할수있습니다. 예를들어, optionbutton.visible = False 로할경우, optionbutton 은해당유저폼에서보이지않게됩니다. 추가사항으로 visible 값을이용하면유저폼상에서보이지만않을뿐 ( 투명상태 ) 내부적으론계속존재하게되므로숨겨진컨트롤의다른이벤트는그대로실행할수있습니다. 3. 유저폼초기화상태편집사용자가유저폼을처음실행하였을때, 좀더편하게이용할수있도록유저폼의초기상태를설정해줍니다. 첫번째로, 유저폼이실행되었을때가장자주사용하는포탈사이트가기본값으로선택되어있도록명령문을입력합니다. Me.optNaver.Value = True 두번째로, 사용자가유저폼을실행하고아이디와비밀번호를바로입력할수있도록 ID 를입력하는텍스트박스에포커싱이잡혀있도록설정해줍니다. Me.txtID.SetFocus Copyright 2018 by 오빠두 2
사용자편의를위한 setfocus 의중요성직장인들에게반복되는업무에있어서 '1 초, 2 초 ' 의시간절약은매우큰효과를불러올수있습니다. 유저폼 VBA 에서코드중간에 SetFocus 를잘잡아준다면사용자가유저폼을사용하면서시간단축을하는데많은도움을줄수있습니다. 4. 아이디와비밀번호를입력하는텍스트상자초기화설정대부분의사용자는이용하는각각의포탈사이트의아이디와비밀번호를다르게만들어서이용합니다. 따라서, 네이버로그인에서구글로그인으로옵션버튼을변경할경우 ( 로그인하려는포탈사이트를변경할경우 ) 아이디와비밀번호를입력하는텍스트박스를초기화하는명령문을만들어줍니다. 아래코드를복사해서유저폼모듈안에붙여넣기하세요. Sub Clear_txt() Me.txtID = "" Me.txtPW = "" 코드를붙여넣기하셨으면, 이전에작성한옵션버튼의 Click 이벤트에 Clear_txt 명령문을각각 입력해줍니다. ( 영상강의를참조해주세요!) Private Sub optnaver_click() Me.btnNaver.Visible = True Me.btnDaum.Visible = False Me.btnGoogle.Visible = False Clear_txt Copyright 2018 by 오빠두 3
Private Sub 과 Sub 의차이점유저폼명령문은접근범위에따라크게 2 가지로나눌수있습니다. 하나는 Private ( 제한적으로접근가능한 ), 그리고 Public ( 어디서든접근가능한 ) 입니다. (Public Sub 과 Sub 은동일합니다.) 만약명령문을 Private 로설정하게되면, 명령문이입력된모듈안에서만호출 / 실행할수있습니다. 명령문을 Private 으로설정할경우여러개의모듈이있을시명령문간의충돌을막아줄수있으나, 유저폼에서와같이특별한경우에만 Private 으로명령문을작성하고보통은 Public 으로명령문을작성합니다. Private 과 Public 의차이점은오빠두 VBA 기초강좌를참고해주세요! 5. 입력된아이디와비밀번호관리아래코드를복사해서유저폼모듈에붙여넣기하세요. Sub () MsgBox " 입력하신아이디는 " & Me.txtID.Value & " 입니다." & vbnewline _ & " 입력하신비밀번호는 " & Me.txtPW.Value & " 입니다." 코드를붙여넣기하셨으면, 명령문을각각의커맨드버튼 Click 이벤트안에넣어줍니다. Private Sub btndaum_click() Private Sub btngoogle_click() Private Sub btnnaver_click() Copyright 2018 by 오빠두 4
VBA 에서 msgbox 사용법유저폼에서메시지박스 (msgbox) 를띄우는방법을매우간단합니다. ( 물론 msgbox 함수안에서다양한상태값을설정할수도있습니다.) 메시지박스는아래와같이 1 문장으로쉽게이용할수있습니다. Msgbox 원하는내용입력 VBA 에서는 큰따옴표 ( ) 를이용하여 내가직접입력하는텍스트값 을구분합니다. 예를들어유저폼의 아이디텍스트박스 에서아이디값을불러올경우, 그것은 내가직접입력한텍스트 가아니라 텍스트박스에서불러오는텍스트로이루어진값 입니다. 만약텍스트박스에서불러오는값도큰따옴표안에같이넣어버리게됟나면, VBA 에서는모든문장을직접입력한문장으로인식하게되고, 따라서 텍스트박스의값 이아닌 me.txti D.Value 처럼코드문장이결과값으로출력이됩니다. 좀더빠른이해를위해, 모듈을하나새로추가하신뒤아래코드를모듈안에붙여넣기하신후실행해보겠습니다. Sub Msgbox_Test() Dim Str As String Str = " 오빠두 " str 은텍스트로불려질값 MsgBox " 안녕하세요. " & Str & " 입니다." # 안녕하세요 # 와 # 입니다 # 는직접입력한텍스트 만약 안녕하세요. & Str & 입니다. 를입력할경우 -> 안녕하세요. Str 입니다. 가메시지박스에출력됨. 즉 Str 을직접입력한텍스트로인식함. 6. 모든작업완료후유저폼종료처리입력한아이디와비밀번호가정상적으로확인되었고메시지박스가출력되었으면 (= 즉포탈사이트에로그인이완료되면 ), 유저폼이자동적으로닫히도록코드를넣어줍니다. 각커맨드버튼의 Click 이벤트명령문안에 Unload Me 함수를넣어주세요. Private Sub btndaum_click() Unload Me 더자세한내용은오빠두영상강의를참조해주세요! Copyright 2018 by 오빠두 5