반응형

안녕하세요.

엑셀 매크로에서 사용되는 VBA는 비주얼 베이직을 엑셀에서 사용할 수 있도록 조금 수정된 버전입니다.

가장 많이 사용되었던 버전인 비주얼 베이직 6.0을 기반으로 하고 있어 VBE도 VB 6.0 편집기를 그대로 가져와 사용하고 있습니다.

엑셀 창에서 <Alt + F11>을 눌러 VBE를 실행합니다.

또는 [개발도구]-[Visual Basic]을 눌러 실행할 수도 있습니다.

단축키를 눌러 실행하는 것이 휠씬 있어 보이죠.

 

메뉴, 도구모음들, 프로젝트 창, 속성 창, 작업 창으로 구성되어 있습니다.

지금은 작업창이 나타나 있지 않고 빈 공간으로 표시되어 있군요.

당장 필요한 건 프로젝트 탐색창입니다.

현재는 엑셀 개체만 표시되고 있습니다.

엑셀 매크로는 모듈 항목이 있어야 쓸 수 있습니다.

모듈을 삽입하려면 [삽입]-[모듈]을 선택합니다.

프로젝트 탐색기에 [모듈] 폴더가 표시되고, [Module1] 파일이 새로 생겼습니다.

그리고 오른쪽 비어 있던 공간에 코드창이 열려 입력을 기다리고 있습니다.

새 매크로를 하나 만들어 볼텐데, VBE에서는 매크로를 프로시저(Procedure)라고 부릅니다.

[삽입]-[프로시저]를 선택합니다.

[프로시저 추가] 대화상자에서 다른 항목은 모두 기본값으로 두고 [이름]에 '셀에오늘날짜나타내기'를 입력하고 [확인] 단추를 누릅니다.

프로시저 이름은 매크로 이름을 정할 때와 같이 첫 시작은 문자로 해야 하고, 중간에 빈칸이 있으면 안됩니다.

자동으로 만들어진 코드에서 '셀에오늘날짜나타내기' 매크로 이름만 직접 입력한 것이고, 나머지는 자동으로 만들어진 코드입니다.

Sub로 시작해서 End Sub로 끝나는 부분이 프로시저입니다.

Public Sub 셀에오늘날짜나타내기()

End Sub

프로시저 내용을 입력하기 위해 오늘 날짜를 나타낼 함수를 찾아야 합니다.

엑셀이라면 TODAYNOW 함수를 쓰면 되지만, 지금 코딩하고 있는 곳은 엑셀이 아니라 VBE 입니다.

사용되는 함수의 이름이나 형식이 엑셀과 같은 경우도 있지만 다른 경우도 많이 있습니다.

그래서 사용하기 전에 미리 확인해 봐야 합니다.

금방 아시게 되겠지만 VBE에서 오늘 날짜를 나타내는 함수는 Date 함수 입니다.

Date 함수가 맞는지 바로 확인해 볼 수 있는데, 바로 직접 실행 창입니다.

[보기]-[직접 실행 창]을 선택합니다.

코드 창 아래 직접 실행 창이 나타납니다.

프로시저를 다 만들고 나서 실행해 봐도 되지만 미리 확인할 수 있으면 미리 확인을 해 두는게 좋은 습관입니다.

직접 실행 창에 코드를 입력합니다.

? date()

물음표(?)는 직접 실행 창에 결과를 나타내라는 의미이고, date( )는 오늘 날짜를 나타내는 VBA 함수입니다.

<Enter>를 누르면 결과가 나타납니다.

date 함수가 오늘 날짜를 나타내는 기능을 한다는 걸 알았으니 프로시저에 제대로 코딩을 해 보겠습니다.

먼저 Public SubEnd Sub 사이 빈 줄에 커서를 두고 <Tab>을 눌러 일정한 간격 들여쓰기를 합니다.

Sub 묶음 안에 포함된 코드라는 걸 시각적으로 보여주는 방법입니다.

들여쓰기를 하지 않았다고 해서 실행이 안되는 것은 아니지만 코드를 알아보기 좋게 만들고, 프로그래머라면 누구나 지키는 약속입니다.

따로 설정하지 않았다면 4칸 들여쓰기가 됩니다.

range("A1").value=date()라고 입력합니다.

Public Sub 셀에오늘날짜나타내기()
    range("A1").value=date()
End Sub

소문자로 쓰고, 큰따옴표 안의 A1은 셀 주소를 나타내기 때문에 대문자로 입력합니다.

VBA에서 프로그래밍 언어에서 사용하는 예약어는 첫글자가 대문자로 바뀌게 됩니다.

그래서 소문자로 모두 쓴 뒤 <Enter>를 눌렀을 때 첫글자가 대문자로 바뀌지 않는다면 뭔가 입력할 때 문제가 있다는 의미가 되겠죠.

코딩을 하다 보면 어쩔 수 없이 오류를 만나게 되는데, 가능한 한 오류가 생기지 않도록 하는 것이 오류가 생겨서 찾아 해결하는 것보다 나은 방법입니다.

그래서 입력할 때부터 규칙을 정해 오류가 생기지 않도록 지키는 거죠?

셀 주소인 A1을 대문자로 쓰는 이유도 마찬가지 입니다.

엑셀에서는 셀 주소를 의미하지만 VBA에서는 그냥 문자일 뿐입니다.

VBA 대부분 코드는 대문자로 쓰는 경우가 없기 때문에 셀 주소라는 걸 한 눈에 보이도록 대문자로 표시하는 거죠.

이건 모든 프로그래머가 지키는 규칙은 아닙니다.

나름대로의 방식이 있죠.

가능하면 지키길 권합니다.

이제 프로시저가 다 되었습니다.

아주 단순한 기능인데 [A1] 셀에 오늘 날짜를 나타내는 매크로죠.

제대로 동작하는지 확인하려면 실행해 보면 됩니다.

[실행]-[매크로 실행]을 누르거나 단축키 <F5> 또는 표준 도구모음 실행 아이콘을 누릅니다.

화면이 깜빡했거나 아니면 아무런 변화가 없었을 겁니다.

그럼 제대로 실행된 겁니다.

[A1] 셀에 오늘 날짜가 나타나도록 했으니 엑셀 창을 열어 봐야 결과를 볼 수 있죠.

<Alt + F11>을 누르면 엑셀 창이 나타나고 결과를 볼 수 있죠.

[A1] 셀에 #######으로 표시되는 이유는 아시죠?

단지 열 너비가 좁아서 그런 것이고, 위 수식 입력줄을 보면 제대로 오늘 날짜가 나타나 있는 걸 알 수 있습니다.

다시 <Alt + F11>을 눌러 VBE로 돌아 옵니다.

Date 뒤 괄호가 사라졌는데, 인수가 없는 함수라서 괄호 표시가 없어진 겁니다.

이것도 엑셀과 다른 것 중에 하나죠.

 

VBE 사용하기 소개는 마쳤는데, 꼭 해야 할 작업이 하나 남아 있습니다.

바로 VBE에서 사용할 글꼴을 프로그래밍용 글꼴로 바꾸는 작업입니다.

숫자 1(일), 영어 대문자 I(아이), 영어 소문자 l(엘)이 글꼴에 따라서 구분되지 않습니다.

숫자 0(영)영어 대문자 O(오)도 잘 구분되지 않는 글자입니다.

프로그래밍용 글꼴은 이런 글자들이 구분되도록 만들어진 글꼴입니다.

[도구]-[옵션]-[편집기 형식]을 선택합니다.

[글꼴] 항목에서 선택하면 됩니다.

그런데 컴퓨터에 기본으로 설치된 글꼴에는 적당한 프로그래밍용 글꼴이 없을 수 있습니다.

검색 사이트에서 검색해 보면 다양한 프로그래밍용 글꼴에 대한 소개가 많이 있으니 먼저 저작권을 확인하고, 마음에 드는 모양의 글꼴을 다운로드해서 설치하고 설정하면 됩니다.

프로그래밍 글꼴이기만 하면 글자 구분이 잘 되도록 만들어져 있으니 어떤 글꼴을 사용하던 상관없습니다.

딱 어느 글꼴이라고 해서 선입견을 가지도록 하지 않겠습니다.

현재 설정한 글꼴은 Bitstream Vera Sans Mono 입니다.

 

여기까지 VBE에 대한 소개입니다.

아직 모두 소개한 것은 아니고 미흡하게 소개된 것도 있는데, 차차 VBA 기능을 배워가며 더 자세히 보죠.

열어 둔 엑셀 파일은 따로 저장할 필요없이 그냥 닫으면 됩니다.

 

필요한 분께 도움되길 바라며 강좌는 마칩니다.

수고하셨습니다.

반응형

+ Recent posts