배움터  
  HOME > 배움터 > 무료강좌
무료강좌
 
엑셀 2000, 황기성님의 엑셀VBA 8일, Excel 2000


8일. 늘 푸른 소나무에 관한 첫번째 이야기

▶ 오늘 배울 내용

코드 작성을 위한 몇 가지 시시콜콜한 이야기 - 주석, 행 이어 쓰기, 복수 명령문, 진수의 표기, 대소문자의 구분, 우리말 사용, 변수와 상수


늘 푸른 소나무. 쓰고 보니...소설의 제목 같습니다(제 전공이 현대 소설이거든요^^* 혹 책방에서 이런 제목의 책을 보셨다면 한번쯤 펼쳐 보셔도 좋을 듯 싶습니다) 늘[상(常)] 푸른[록(綠)] 나무[수(樹)]는 - 늘 그 잎이 푸릅니다. 하지만, 그 늘 푸른 소나무을 뒤로 한 사시사철은 매양 변하기 마련입니다. 봄, 여름, 가을, 겨울의 변화는 늘 푸른 소나무를 있게 하는 힘이지요.

우리는 상록수의 변함없음에 찬탄을 보내기도 하지만, 사철의 아름다움에도 곧잘 짧은 탄식을 내어뱉습니다. 아, 이 얼마나 아름다운 모순인가!

VBA 배우는 데에 왠 넋두리냐고 핀잔을 주실 분들이 계실 듯 싶습니다. 그래, 이쯤에서 말을 돌려보도록 하겠습니다^^ 지금부터 드리는 말씀은 VBA프로그래밍을 작성할 때 필요한 사항 몇 가지입니다. 그래, 제목이 코드 작성을 위한 몇 가지 시시콜콜한 이야기랍니다.

주석(註釋.注釋comments) : 엑셀에서 메모를 comments라고 합니다. 어떤 토를 달기 위해, 부가적인 정보를 제공하기 이 메모라는 기능을 이용하지요. 물론 이 메모는 계산에 직접 이용될 수 없습니다. VBA에서 주석이라 함도 이와 같은 메모와 비슷하답니다. 프로그램의 실행과는 관련이 없지만, 프로그램의 이해를 돕기위해 사용자가 삽입한 문구들을 주석이라고합니다. 일반적으로 프로그래밍 입문서에는 이 주석을 다는 습관을 들이는 것이 매우 중요하다고 강조합니다.

주석은 홑따옴표(')를 사용하며, 한 행 가운에 이 홑따옴표 다음은 프로시저의 처리에서 무시(실행되지 않습)됩니다.

물론. x =1 'x에 1을 대입하다

와 같은 아주 단순한 내용에 각주를 다는 것은 낭비이겠습니다만, 전체적인 프로그래밍의 흐름을 뒤따라 잡을 수 있도록 주석을 다는 것은 매우 필요하고 긴요한 일입니다. 지금은 믿지 않으실 지 몰라도^^ 때때로 자신이 만든 코드 자체를 이해하기 곤란한 경우도 드물지 않게 생기게 됩니다. 주석을 다는 습관 - 좋은 습관입니다^^

주석으로 처리하면 VBA는 자동으로 주석 텍스트 색상을 변경(기본값은 녹색입니다)해줍니다. 

한줄씩한줄씩 세상에는 아주 많은 프로그래밍 언어가 있답니다. 얼마나 많은지는 모르겠으나 인류가 사용하는 일반 언어의 수보다 더 많은 종류의 프로그래밍 언어가 있다고도 합니다. 그런데, 이 많은 프로그래밍 언어를 고급 언어, 저급 언어라고 딱 잘라 구분하기도 한답니다. 혹VBA와 같은 언어를 Basic이란 말 때문에 저급 언어라 오해하실 분이 계실 지 모르겠습니다만, VBA는 고급 언어에 들어 간답니다. 고급 언어라는 뉘앙스 때문에, 무엇인가 대단한 것이 이 VBA에 있구나 하시는 분이 있다면 이 또한 오해랍니다^^  고급 언어, 저급 언어는 쉽게 말하면 컴퓨터라는 기계가 이해하기 좋은 언어는 저급 언어(사실은 저 수준 언어라는 표현이 좋을 듯 싶기도 합니다만...흔히 기계어, 어셈블리어라고 부르는 것들이 대표적인 저수준 언어입니다)라고  하고, 반대로 일반 언어와 흡사하여 사람 쪽에서 이해하기 쉬운 언어들을 고급 언어라고 합니다(우리가 알고 있는 대부분의 프로그래밍 언어들, C, C++, Basic, Java 등등은 고급 언어에 포함됩니다). 그러나 고급 언어로 작성한 프로그램이라 하더라도, 컴퓨터가 이해할 수 있는 저급 언어로 번역되어야 합니다. 이 번역을 맡는 것을 흔히, 컴파일러 혹은 인터프리터라고 부릅니다.(이 둘은 물론 다른 것입니다만...같은 목적의 일을 하므로^^) 고급 언어란 실상 컴파일러나 인터프리터를 두고 하는 말이랍니다. 우리가 VBA편집기 창에서 코드를 입력하고 실행한다고 하는 것은, VBA가 이를 컴퓨터가 알아들을 수 있는 기계어로 컴파일하도록 하는 것과 같습니다. 그런데, 한줄씩한줄씩이란 말은 무슨 뜻일까요? 그렇습니다. VBA에서는 우리가 입력한 코드가 한줄씩 실행된다는 뜻이랍니다. 따라서 우리는 일의 순서에 따라 프로그램을 작성해야 합니다. 기억하십시오. 슈퍼에 가서 콜라를 사야 하는 것이지. 콜라를 산 뒤에 슈퍼에 가는 것은 아니랍니다^^

 

행이어 쓰기  앞서 말씀드렸 듯이, 우리가 VBA 편집기에 입력한 코드는 한줄씩 실행됩니다. 즉, 하나의 명령은 줄 단위로 입력되어야 합니다. 그런데, 행이어 쓰기란 코드가 한 줄로 쓰기에는 너무 길어 한 화면에 나타내기 어려울 때, 알아 보기 쉽게 하기 위해 여러 줄로 나누어 쓰되 이것이 연결된 것임을 "_"(언더 스코어)라는 문자를 이용해 알리는 것입니다. 주의! 행 연결 문자인 "_" 앞에는 반드시 공백이 있어야 하며, 뒤에 주를 붙일 수 없습니다. 아래와 같이, 정렬이나 부분합 등 엑셀이 제공하는 메서드들 가운데 여러 개의 인수가 필요한 것들을 알기 쉽게 나타내 보이거나, IF문이나 다른 출력문에서 한 행이 너무 긴 경우 "_"를 이용하여 행이어 쓰기를 하실 수 있습니다. 아래 예제에서 행의 맨 끝에 있는 "_"를 주목해 보시면 이해하시기 쉬울 것입니다.

원래 한 줄로 써야할 것을 여러줄로 나누어 쓸 때 "_"으로 연결한다는 것을 잊지 않으시면 되겠습니다. 그리고 "_" 앞엔 공백이 하나 있어야 합니다^^

 

복수 명령문 복수 명령문이란 앞의 행이어쓰기와 반대 개념이라고 생각하시면 쉽습니다. 한줄에 하나의 문장을 쓰는 것이 기본입니다만, 콜론(:)으로 구분지어 한 줄에 여러 개의 문장을 사용할 수도 있답니다. 아래의 예제는 rngDel과 rngD라는 개체 변수에 할당했던 메모리를 반환받을 때 콜론을 이용해 한 줄로 처리한 것을 보여주고 있습니다

이어 쓰려면 "_", 나누어 쓰시려면 ":"을 입력합니다^^*

 

진수의 표기 진수의 표기^^* 잘 아시겠지만 컴퓨터는 숫자놀이를 좋아한다고 합니다. 두 자리 수가 넘어가는 곱셈 문제도 거의 해결이 불가능한 저와 같은 사람에게 그래 컴퓨터는 아주 가깝고도 먼 존재 같습니다(이유는? 묻지 마십시요...어지러우니깐요^^*) 이 진수의 표기에 대해서는 그냥 넘어가셔도 좋습니다. 특별히 많이 사용하게 되는 부분은 아니므로^^(사실은 제가 잘 모르므로^^*)

8진수나 16진수를 사용할 때는 다음과 같이&O, &H와 같은 부호를 붙입니다. 짐작하신 그대로 O는 8진수, H는 16진수의 약자랍니다.

A = &H80FFFF '16진수 표기
B = &O377  '8진수 표기

아래와 같은 예제는, 사용자 정의 폼의 명령 단추를 눌러 사용자 정의 폼의 배경을 노란색으로 변경하는 것입니다. 16진수로 속성 값을 설정했음을 알 수 있습니다. 그런데, 어떻게 &H80FFFF가 노란색임을 알 수 있느냐구요? 속성창에 있는 값을 복사해 붙인 것이랍니다....^^*

Private Sub CommandButton1_Click()
     Me.BackColor = &H80FFFF
End Sub

대소문자의 구분과 우리말 사용 대소문자의 구분이라고 하니, 우리말의 경우가 아니라 영문자의 경우겠지요^^* 제목을 구분이라고 달았습니다만, VBA에서는 대소문자를 구분하지 않습니다. 그러나 VBA편집기는 자동으로 선언시 사용한 문자로 대소문자를 통일시켜 줍니다. 그래, 변수를 선언할 때 대문자 하나를 끼어넣으면, 코딩 시 여러모로 편리합니다. 올바르게 변수를 사용했는가를 금방 알 수 있게 됩니다^^

intS라고 마지막 대문자 "S"로 선언한 변수는 VBA 편집기가 자동으로 프로시저의 처음부터 일관되게 대소문자를 통일해 줍니다.

제가 엑셀 VBA를 하면서, 맨 처음 놀랐던 것은 프로시저의 명이나 변수명에 우리말을 사용할 수 있다는 것이었습니다^^* 왜 놀랐느냐구요? 예전에는 불가능하는 일이었기 때문이랍니다. 프로시저나 변수명 심지어 모듈이나 폼의 이름까지도 모두 우리말로 사용이 가능합니다. 저는 개인적으로 프로그래밍할 때 우리말을 잘 사용하지 않는 습관을 가지고 있습니다만(아주 게을러, 한영 전환 키를 누르는 것이^^*) 프로그램을 보다 명확히 한다는 의미에서, 고수분들 가운데에는, 우리말 변수나 프로시저명을 즐겨 사용하시는 분도 계십니다. 김중원님의 ExcelVBAHome(http://home.tinc.co.kr/~jwkim)을 방문해 보신 분은 누구나 우리말을 이용해 엑셀 프로그래밍하는 전형적인 사례를 보셨을 것입니다. 아래와 같은 간단한 예제를 참고해 보십시오.(그림이므로^^ 실제로는 여러분이 직접 입력해 보셔야 한답니다. Alt + F11키를 눌러 VBA편집기 창을 여신 뒤, 아래 프로시저를 직접 입력하시고, F5키를 눌러 실행시켜 보십시오. 물론 81번이나 단추를 눌러야 하니...조금 피곤하시기도 하겠습니다만^^)

이제 오늘을 마지막 이야기를 해야할 차례가 된 듯 싶습니다. 그런데, 제가 이 강좌의 제목을 늘 푸른 소나무라고 붙였습니다만...정작 이 제목과 관련한 이야기는 미처 못했던 듯 싶습니다. 변수와 상수에 관한 이야기를 하려고 했던 것인데요...

세상에는 늘 한결 같은 것이 있는가 하면...그때그때 변하는 것들도 있답니다. 늘 푸른 소나무와 같이 한결 같은 것을, 프로그래밍에서는 상수라고 부르고, 봄 여름 가을 겨울과 같이 철마다 변하는 것을 변수라고 부른다는 서툰 얘기만 꺼내고 다음 시간을 기약해야 할 듯 싶습니다^^* 그런데, 여러분은 늘 푸른 소나무도 갈봄여름겨울도 모두 좋아 하시는지요?

그럼...다음에 또*^_^*

목차 | 이전 | 다음