[혈변강의 엑셀VBA] 1강: 일단 들이대보는 VBA by storm

1강: 일단 들이대보는 VBA



Sub Intro()
필자의 다른 강좌를 보신 분들은 알고 있겠지만, 본인은 강좌를 쓸 때 자질구래한 메뉴 설명 같은 건 절대 늘어놓지 않는다. 그런식의 강좌를 원한다면 그냥 시중에 많이 나와있는 엑셀 VBA 서적을 보는 편이 낫다. 필자의 강좌 스타일은 쌩초보도 따라하다보면 그냥 재미있고 쉽게 익히는 스타일을 추구하기 때문이다. 그럼 언제나 그랬듯이 일단 한 번 들이대보자!!!


VBA 그까이꺼, 일단 들이대보자
자 일단 엑셀 프로그램을 열어서 새파일을 하나 생성한다.(단축키 Ctrl + N) 그다음에 아래 그림과 같이 A1 셀에 아무 단어나 하나 입력하고 파일을 저장하는데 저장할 때 파일 형식을 'Excel 매크로 사용 통합 문서'로 지정한다. 파일명은 아무래도 상관없다. 이렇게 저장하면 파일의 확장자가 *.xlsm 이 될 것이다. //편의상 본 강좌는 요태까지 구래와꼬 아패로도 개속 MS Office 2007버전을 기준으로 할 것이다.

그 다음 엑셀창에서 단축키 Alt + F11 을 누르면 Microsoft Visual Basic 편집창이 생성된다. 자주 누르게 될 단축키니까 외워두는 것이 좋지만, 굳이 엑셀 프로그램 상단 메뉴에서 눌러서 열고 싶다면, 우선 엑셀 프로그램 맨 위 왼쪽 모서리에 있는 동그란 엑셀 로고를 클릭한 다음 [Excel 옵션] 에서 □리본 메뉴에 개발 도구 탭 표시 항목을 체크한 다음 [확인]을 누른다.

그러면 엑셀 프로그램의 상단 메뉴에 [개발도구]라는 탭이 생성되는데, 여기서 [Visual Basic]이라는 아이콘을 클릭하면 비주얼 베이직 편집창이 열린다. 앞으로는 이것을 'VB편집기' 또는 'VB편집창' 이라고 부르겠다. VB편집창을 열면 처음에는 별다른게 없다. 아직 아무 코드도 입력하지 않았으니 당연하다. 그러면 이제부터 아주 간단하고 기초적인 것부터 하나씩 해보자.


유저폼 같은 걸 끼얹어보자!
엑셀의 꽃이 함수라면, 엑셀VBA의 꽃은 유저폼(사용자정의폼: User Form)이다. 유저폼이란 문자 그대로 엑셀의 사용자(user)가 직접 만드는 폼(form)을 말한다. 설명이 길어지면 지루하니 일단 한번 들이대서 만들어보도록 한다.

VB편집창 상단 메뉴에서 [삽입]을 누른 다음 [사용자 정의 폼]을 선택한다. 그러면 아래 그림과 같이 폼이 하나 생성될 것이다.

그러면 VB편집창 위에 떠있는 [도구상자]에서 ab| 모양이 그려져 있는 아이콘, 즉 '텍스트 상자' 아이콘을 클릭한 다음 그대로 드래그해서 유저폼 위에 끌어 놓는다. 만약 [도구상자]가 VB편집창 위에 떠있지 않다면, VB편집창 상단 메뉴 중 [보기]를 선택한 다음 [도구상자]를 클릭하면 [도구상자]가 나타날 것이다.
그러면 유저폼에 텍스트 상자가 생성되어 있을 것이다. 이번에는 도구상자에서 [명령단추]를 드래그 해서 유저폼 위에 올려 놓아보자.
위 그림과 같이 명령단추가 만들어졌다면, 명령단추를 클릭해서 선택된 상태로 VB편집창 좌측하단에 있는 속성창에서 Caption 항목에 CommandButton1 이라고 된 것을 지우고 텍스트 불러오기 라고 입력해보자. 속성창에 한글을 입력할 때에는 입력중에 글자가 깨지는 현상이 있는데 개의치 말고 글자를 제대로 다 입력하면 정상적으로 글씨가 나타난다.
자 이렇게 명령단추까지 만들었다면 이제 본격적으로 비주얼 베이직 코드를 입력해볼 차례다. 이번 첫 강좌에서는 [텍스트 불러오기]라고 씌여진 단추를 클릭했을 때 바로 옆의 텍스트 상자에 A1 셀에 입력한 텍스트가 나타나도록 해본다.

우선 유저폼에 있는 [텍스트 불러오기] 단추를 더블클릭 해보자. 그러면 갑자기 유저폼이 사라지고 무시무시한(!) 코드 편집창이 나타나고 아래와 같은 코드가 기록되어 있을 것이다. 그 위에 Option Explicit 라고 되어 있는 건 일단 지금은 무시한다.

Private Sub CommandButton1_Click()

End Sub

아마 비주얼 베이직을 처음 공부하거나 프로그래밍 공부를 전혀 해보지 않은 사람이라면, 이 두 줄의 코드가 너무나도 생소하게 느껴질 것이다. 하지만 내막을 알고보면 별로 어려울 것은 없다. 이 코드를 해석하면 CommandButton1 이라는 이름을 가진 명령단추를 클릭할 때 수행할 Sub라는 뜻이다. 그러면 Sub는 또 뭔가? 용어로 말하면 프로시저(procedure)의 일종으로 동작을 수행하는 단위를 뜻한다. 즉 위 코드는 CommandButton1을 클릭 했을 때, SubEnd Sub 사이에 있는 명령문을 수행한다. 물론 아직은 SubEnd Sub 사이에 아무런 코드도 넣지 않았기 때문에 지금 코드 상으로는 아무 것도 수행하지 않는다. 그럼 이제부터 이 명령단추를 클릭했을 때 텍스트 상자에 A1 셀의 내용이 나타나도록 코드를 작성해보자.

우선 VB편집창(코드 편집창)에서 Shift + F7을 눌러 다시 코드 대신 유저폼이 나타나도록 한다. VB편집기 상단 메뉴상에서는 [보기]에 보면 [코드]와 [개체]가 있으니 그것을 누르면 코드 편집창과 개체 편집창(유저폼 편집창)을 선택적으로 볼 수 있다.

VB편집기의 유저폼 상에서 처음 만든 텍스트 상자를 한 번만 클릭해보자. 그다음 화면 좌측하단의 속성창에서  (이름) 항목을 보라.

그러면 아마도 이름이 TextBox1 으로 되어 있을 것이다. 이 (이름)이 이 텍스트 상자를 지칭하는 고유명칭으로 VB 코드상에서는 전역변수와 같이 취급된다. 즉 다른 개체나 변수명을 TextBox1 으로 이름짓는 것은 불가능하다는 뜻이다.

그다음 다시 F7 키를 눌러 코드창으로 전환한다. 그리고 코드를 다음과 같이 입력한다. 중요한 것은 코드를 반드시 Private Sub CommandButton1_Click() 프로시저에 입력해야 한다는 점이다. 이 프로시저에 코드를 넣어야만 [텍스트 불러오기] 명령단추를 클릭할 때 코드에 넣은 명령이 수행된다.

입력해야 할 코드: TextBox1.Text = Sheet1.Range("A1")


이렇게 코드를 입력한 다음에 단축키 F5 또는 VB편집기 상단에 있는   아이콘을 클릭해서 유저폼을 실행시키고, [텍스트 불러오기] 버튼을 클릭해보자. 코드를 정상적으로 잘 작성했다면, 여러분이 엑셀 시트 sheet1의 A1 셀에 입력했던 단어가 유저폼의 텍스트 상자에 나타날 것이다.


일단 들이대 본 VBA 코딩

자 어떤가? 정말 너무나도 짧은 강좌를 보고 겨우 하나를 해보았을 뿐인데, 나도 뭔가 '프로그래밍 비스무리 한 것'을 해냈다는 느낌이 오지 않는가? 여러분이 만약 이 강좌를 보기전까지 어떤 프로그램 언어든 단 한줄의 코드도 스스로 작성해본적이 없었다면, 이번 강좌만으로도 프로그래밍이 막연한 외계어라거나 범접할 수 없는 안드로메다의 장벽 같이 느껴졌던 선입견은 어느 정도 해소되었을 것이라 본다. 아쉬움을 남기기 위해 일단 첫 강좌는 여기까지만 해두도록 하고, 본격적인 코드의 해설과 동작 원리 등은 이어지는 강좌에서 계속 알아보도록 하자.

만약 정말로 아쉬움이 남는다면 지금 해본 파일에서 A1 셀에 다른 단어를 넣어보고 실행시켜본다든지, 아니면 A1 셀이 아닌 다른 셀에 텍스를 입력한 다음 코드를 수정해서 유저폼의 텍스트 상자에 나타나도록 하는 식으로 응용을 해보라. 사실은 본 강좌의 내용보다 강좌를 토대로 여러분들이 직접 이것저것 시도해보는 것이 실력 향상에 더 큰 도움이 될 것이다. 지금 강좌를 쓰고 있는 나 자신도 아주 오래전에 그러했듯이...

End Sub

//To be continued...





핑백

덧글

  • storm 2010/08/09 23:56 # 답글

    제리님이 댓글 쓰셨었는데, 포스팅에 문제가 있는지 페이지 로딩이 너무 오래걸려서 부득이 기존 포스팅 삭제하고 새로 올렸습니다 ㅜ.ㅜ
  • 제리 2010/08/10 00:15 #

    응용해서 이거저거 만들어 넣고 있습니다. 일단 목표는 싱글 알피지 게임 아이템과 퀘스트 DB 정리 및 게임 연동~ ㅎ
  • 월랑아 2010/08/10 00:11 # 답글

    감사합니다. 유용하게 활요하도록 노력하겠습니다 다음도 기대하겠습니다~!
  • storm 2010/08/10 08:57 #

    내 유용하게 활요하세요 :D
  • 김윤정 2010/08/10 08:41 # 답글

    오오 이것이야말로 인트*넷에 링크될 글 (...)
  • storm 2010/08/10 08:57 #

    헐! 공포의 인*라넷!!!
  • 마이즈 2010/08/10 09:51 #

    헉 인트*넷... ㄷㄷㄷㄷ
  • 오즈라엘 2010/08/10 10:28 # 답글

    VBA는 안해봤었는데, 이 글을 보니 정말 재밌어보이네요 ㅋ
  • storm 2010/08/10 11:42 #

    VBA의 세계에 한 번 빠져보시라능~
  • AV! 2010/08/10 10:36 # 삭제 답글

    으악! 마침 VBA공부중이었는데 요즘 스톰님 블로그에서 반가운 글들만 보네요!!
    (썅토끼님 어서 카툰좀 ㅠㅠ)
  • storm 2010/08/10 11:42 #

    후후후~ 나의 선견지명이라능!
  • gump 2010/08/10 11:29 # 삭제 답글

    스톰님 자리를 가보면 커다란 책장이 4등분 되어 있는데...
    한면은 경영, 회계 관련 서적
    한면은 프로그래밍(루아, 언리얼3, 서버 프로그래밍)
    한면은 게임기획 및 개발관련 서적
    한면은 마케팅

    스톰님 전공은 뭘까요?
  • storm 2010/08/10 11:37 #

    후후 그 옆면에 있는 2단, 3단 책장도 내꺼라능~
    대학 전공은 일러스트레이션임 후후후...



    난 누군가~ 또 여긴 어딘가~ ㅜ.ㅜ
  • ZeroDevice 2010/08/10 11:37 # 답글

    이런 건 아이스크림 먹듯 핥아 먹어야 제 맛... (--)
    낼름낼름 가져 가도록 하겠습니... (사라진다)
  • storm 2010/08/10 12:13 #

    헐!
  • 오오~ 2010/08/12 01:35 # 삭제 답글

    저는 이 강좌가 많이 도움이 될거 같으니 중단하진 말아주세요~~
  • storm 2010/08/12 09:17 #

    뭐 이제 막 시작했으니 당분간은 걱정 안하셔도 될듯 하네요 :)
  • 의랑 2010/08/31 15:44 # 삭제 답글

    감사합니다 __) 이제 1장 끝이에요 ㅎㅎ
  • bonanza 2010/09/01 22:52 # 삭제 답글

    아..비베를보니 벌써 옛날같은 일년전 생각이 나네요 ㅋ 어서어서 많은 강좌로 제 기억을 되살려 주세요 ㅋ 재미있는 비베!!
  • 대단합니다 2010/09/03 13:57 # 삭제 답글

  • 에스프가르데 2010/09/23 12:04 # 삭제 답글

    좋은 글 감사합니다! (__)
  • 천옥 2010/10/06 16:20 # 삭제 답글

    오늘부터 정주행 하면서 무조건 따라하기?!

    혼자 기획하고 이상한 삽질하면서 공부하고 있는 학생인데요.

    많이 배우고 가겠습니다~?!
  • Edovy 2010/11/04 10:02 # 삭제 답글

    오늘부터 저도 정주행하면서!!! 도움 많이 받을께요~!!
  • 김상추 2011/01/06 23:29 # 삭제 답글

    진심으로 감사합니다! 열심히 배우고있씁니다 ^^
  • 리엘 2011/04/29 15:29 # 삭제 답글

    코드 보기에서 A1 에서 A2 로 변경 할려면 어떻게 해야되요?
  • storm 2011/04/29 15:59 #

    무슨 말인지 이해가 잘 안되네요...?
  • 나무거리 2011/06/24 15:50 # 삭제 답글

    감사합니다~! 잘보고 가요~!!^^
  • 두르가 2011/09/13 15:11 # 삭제 답글

    재미있어보이네요. ^_^
    전 사실 워드나 파포보다 엑셀에 취약해서 으으 여튼 좋은 정보 감사합니다.
  • 1234 2011/09/14 10:37 # 삭제 답글

    게임기획 입문에 좋은 서적좀 몇개만 추려서 추천해주세요!

    스톰님 블로그만큼만 도움되는거면 OK!

  • 말머리대마앙 2011/09/30 11:42 # 삭제 답글

    이거 댓글을 안달수가 없네요!
    정말 잘 배우고 갑니다!
  • 빛나리샘 2012/03/19 01:24 # 삭제 답글

    와우! 제가 찾던 그런 글입니다.
    VBA를 배우고 싶었는데 막막하던 저에게 힘이 되네요
    정말 감사합니다. 그리고 앞으로도 계속 글 올려 주세요
    열심히 배우겠습니다
    엑셀로 아이들 영어 공부하는 프로그램 하나 만들어 보는게 꿈이거든요
  • storm 2012/03/22 11:03 #

    앞으로도 "계속" 올리기는 어렵구요.
    어차피 제가 쓴 강좌를 보시고 나면 시중에 나와있는 VBA 기초 책을 충분히 이해하실 수 있을테니 책으로 공부하시는 걸 권합니다.
  • 지훈 2012/09/25 21:14 # 삭제 답글

    정말 감사합니다. 이런 강의 때문에 저같은 왕초보 신입들이 살아나는것 같습니다 ㅠㅠ
  • 고니 2013/01/22 15:42 # 삭제 답글

    정말 잘 배우고 갑니다!!
  • 꾸마로 2013/02/26 06:34 # 삭제 답글

    정말 감사합니다. ㅠㅠ
  • newgum 2015/03/20 13:19 # 삭제 답글

    감사합니다.
    업무에 도움이 많이 될 것 같습니다.
댓글 입력 영역



통계 위젯 (화이트)

1519
244
503012