
Sub Intro()
필자의 다른 강좌를 보신 분들은 알고 있겠지만, 본인은 강좌를 쓸 때 자질구래한 메뉴 설명 같은 건 절대 늘어놓지 않는다. 그런식의 강좌를 원한다면 그냥 시중에 많이 나와있는 엑셀 VBA 서적을 보는 편이 낫다. 필자의 강좌 스타일은 쌩초보도 따라하다보면 그냥 재미있고 쉽게 익히는 스타일을 추구하기 때문이다. 그럼 언제나 그랬듯이 일단 한 번 들이대보자!!!
VBA 그까이꺼, 일단 들이대보자
자 일단 엑셀 프로그램을 열어서 새파일을 하나 생성한다.(단축키 Ctrl + N) 그다음에 아래 그림과 같이 A1 셀에 아무 단어나 하나 입력하고 파일을 저장하는데 저장할 때 파일 형식을 'Excel 매크로 사용 통합 문서'로 지정한다. 파일명은 아무래도 상관없다. 이렇게 저장하면 파일의 확장자가 *.xlsm 이 될 것이다. //편의상 본 강좌는 요태까지 구래와꼬 아패로도 개속 MS Office 2007버전을 기준으로 할 것이다.

그러면 엑셀 프로그램의 상단 메뉴에 [개발도구]라는 탭이 생성되는데, 여기서 [Visual Basic]이라는 아이콘을 클릭하면 비주얼 베이직 편집창이 열린다. 앞으로는 이것을 'VB편집기' 또는 'VB편집창' 이라고 부르겠다. VB편집창을 열면 처음에는 별다른게 없다. 아직 아무 코드도 입력하지 않았으니 당연하다. 그러면 이제부터 아주 간단하고 기초적인 것부터 하나씩 해보자.
유저폼 같은 걸 끼얹어보자!
엑셀의 꽃이 함수라면, 엑셀VBA의 꽃은 유저폼(사용자정의폼: User Form)이다. 유저폼이란 문자 그대로 엑셀의 사용자(user)가 직접 만드는 폼(form)을 말한다. 설명이 길어지면 지루하니 일단 한번 들이대서 만들어보도록 한다.
VB편집창 상단 메뉴에서 [삽입]을 누른 다음 [사용자 정의 폼]을 선택한다. 그러면 아래 그림과 같이 폼이 하나 생성될 것이다.




우선 유저폼에 있는 [텍스트 불러오기] 단추를 더블클릭 해보자. 그러면 갑자기 유저폼이 사라지고 무시무시한(!) 코드 편집창이 나타나고 아래와 같은 코드가 기록되어 있을 것이다. 그 위에 Option Explicit 라고 되어 있는 건 일단 지금은 무시한다.
Private Sub CommandButton1_Click()
End Sub
아마 비주얼 베이직을 처음 공부하거나 프로그래밍 공부를 전혀 해보지 않은 사람이라면, 이 두 줄의 코드가 너무나도 생소하게 느껴질 것이다. 하지만 내막을 알고보면 별로 어려울 것은 없다. 이 코드를 해석하면 CommandButton1 이라는 이름을 가진 명령단추를 클릭할 때 수행할 Sub라는 뜻이다. 그러면 Sub는 또 뭔가? 용어로 말하면 프로시저(procedure)의 일종으로 동작을 수행하는 단위를 뜻한다. 즉 위 코드는 CommandButton1을 클릭 했을 때, Sub와 End Sub 사이에 있는 명령문을 수행한다. 물론 아직은 Sub와 End Sub 사이에 아무런 코드도 넣지 않았기 때문에 지금 코드 상으로는 아무 것도 수행하지 않는다. 그럼 이제부터 이 명령단추를 클릭했을 때 텍스트 상자에 A1 셀의 내용이 나타나도록 코드를 작성해보자.
우선 VB편집창(코드 편집창)에서 Shift + F7을 눌러 다시 코드 대신 유저폼이 나타나도록 한다. VB편집기 상단 메뉴상에서는 [보기]에 보면 [코드]와 [개체]가 있으니 그것을 누르면 코드 편집창과 개체 편집창(유저폼 편집창)을 선택적으로 볼 수 있다.
VB편집기의 유저폼 상에서 처음 만든 텍스트 상자를 한 번만 클릭해보자. 그다음 화면 좌측하단의 속성창에서 (이름) 항목을 보라.
그러면 아마도 이름이 TextBox1 으로 되어 있을 것이다. 이 (이름)이 이 텍스트 상자를 지칭하는 고유명칭으로 VB 코드상에서는 전역변수와 같이 취급된다. 즉 다른 개체나 변수명을 TextBox1 으로 이름짓는 것은 불가능하다는 뜻이다.
그다음 다시 F7 키를 눌러 코드창으로 전환한다. 그리고 코드를 다음과 같이 입력한다. 중요한 것은 코드를 반드시 Private Sub CommandButton1_Click() 프로시저에 입력해야 한다는 점이다. 이 프로시저에 코드를 넣어야만 [텍스트 불러오기] 명령단추를 클릭할 때 코드에 넣은 명령이 수행된다.

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

일단 들이대 본 VBA 코딩
자 어떤가? 정말 너무나도 짧은 강좌를 보고 겨우 하나를 해보았을 뿐인데, 나도 뭔가 '프로그래밍 비스무리 한 것'을 해냈다는 느낌이 오지 않는가? 여러분이 만약 이 강좌를 보기전까지 어떤 프로그램 언어든 단 한줄의 코드도 스스로 작성해본적이 없었다면, 이번 강좌만으로도 프로그래밍이 막연한 외계어라거나 범접할 수 없는 안드로메다의 장벽 같이 느껴졌던 선입견은 어느 정도 해소되었을 것이라 본다. 아쉬움을 남기기 위해 일단 첫 강좌는 여기까지만 해두도록 하고, 본격적인 코드의 해설과 동작 원리 등은 이어지는 강좌에서 계속 알아보도록 하자.
만약 정말로 아쉬움이 남는다면 지금 해본 파일에서 A1 셀에 다른 단어를 넣어보고 실행시켜본다든지, 아니면 A1 셀이 아닌 다른 셀에 텍스를 입력한 다음 코드를 수정해서 유저폼의 텍스트 상자에 나타나도록 하는 식으로 응용을 해보라. 사실은 본 강좌의 내용보다 강좌를 토대로 여러분들이 직접 이것저것 시도해보는 것이 실력 향상에 더 큰 도움이 될 것이다. 지금 강좌를 쓰고 있는 나 자신도 아주 오래전에 그러했듯이...
덧글
(썅토끼님 어서 카툰좀 ㅠㅠ)
한면은 경영, 회계 관련 서적
한면은 프로그래밍(루아, 언리얼3, 서버 프로그래밍)
한면은 게임기획 및 개발관련 서적
한면은 마케팅
스톰님 전공은 뭘까요?
대학 전공은 일러스트레이션임 후후후...
난 누군가~ 또 여긴 어딘가~ ㅜ.ㅜ
낼름낼름 가져 가도록 하겠습니... (사라진다)
혼자 기획하고 이상한 삽질하면서 공부하고 있는 학생인데요.
많이 배우고 가겠습니다~?!
전 사실 워드나 파포보다 엑셀에 취약해서 으으 여튼 좋은 정보 감사합니다.
스톰님 블로그만큼만 도움되는거면 OK!
정말 잘 배우고 갑니다!
VBA를 배우고 싶었는데 막막하던 저에게 힘이 되네요
정말 감사합니다. 그리고 앞으로도 계속 글 올려 주세요
열심히 배우겠습니다
엑셀로 아이들 영어 공부하는 프로그램 하나 만들어 보는게 꿈이거든요
어차피 제가 쓴 강좌를 보시고 나면 시중에 나와있는 VBA 기초 책을 충분히 이해하실 수 있을테니 책으로 공부하시는 걸 권합니다.
업무에 도움이 많이 될 것 같습니다.