VBA 프로그래밍 언어: 꼭 알아야 할 12가지 구성 요소 정리

2025. 7. 6.

 

매크로 기록을 넘어 직접 코드를 작성하고 싶으신가요? 그렇다면 VBA라는 '언어'의 기본 문법부터 이해해야 합니다.

 

VBA 코드는 몇 가지 핵심 '구성 요소'의 조합일 뿐입니다. 마치 단어를 알아야 문장을 만들 수 있듯, 이 기본 개념을 이해하는 것이 코드를 읽고 쓰는 모든 과정의 튼튼한 기초가 됩니다.

 

이 글은 VBA의 뼈대가 되는 12가지 필수 개념을 정리했습니다. 이것만 알아도 코드가 더 이상 암호처럼 보이지 않을 겁니다. 모든 정보는 신뢰도 높은 Microsoft 공식 문서를 기반으로 하며, 아래 각 항목을 클릭하면 해당 설명서로 바로 연결됩니다.

엑셀 VBA 이미지

 

 

1. Character sets (문자 집합)

VBA가 인식하고 사용할 수 있는 문자(알파벳, 숫자, 특수 기호, 한글 등)의 범위를 정의합니다. 어떤 문자 집합을 사용하느냐에 따라 처리할 수 있는 언어가 달라집니다.

 

 

2. Constants (상수)

변수(Variable)와 반대되는 개념으로, 프로그램 실행 중에 절대 변하지 않는 값에 붙이는 이름입니다. 예를 들어, 메시지 박스의 '예/아니요' 버튼을 나타내는 vbYesNo는 이미 정해진 상수입니다.

 

  • Calendar (달력 형식): 날짜 계산 시 그레고리력 또는 이슬람력을 사용할지 지정하는 상수입니다.
  • CallType (호출 유형): 프로시저가 함수(Function)로 호출되었는지, 서브(Sub)로 호출되었는지 등을 구분하는 데 사용됩니다.
  • Color (색상): vbRed, vbBlue처럼 미리 정의된 색상 값을 나타냅니다.
  • Comparison (비교 방식): 문자열을 비교할 때 대소문자를 구분할지(vbBinaryCompare) 또는 구분하지 않을지(vbTextCompare) 지정합니다.
  • Date (날짜): vbSunday, vbMonday처럼 요일을 나타내는 상수를 포함합니다.
  • Date Format (날짜 서식): vbLongDate (자세한 날짜 형식)처럼 시스템에 설정된 날짜/시간 표시 형식을 지정합니다.
  • Dir, GetAttr, and SetAttr: 파일의 속성(읽기 전용, 숨김 등)을 확인하거나 설정할 때 사용하는 상수들입니다.
  • DriveType (드라이브 유형): 해당 드라이브가 하드 디스크인지, CD-ROM인지, 네트워크 드라이브인지 등을 구분합니다.
  • File Attribute (파일 특성): 파일이 '읽기 전용'(vbReadOnly), '숨김 파일'(vbHidden) 등의 어떤 특성을 가졌는지 나타냅니다.
  • File Input/Output (파일 입출력): 파일을 열 때 읽기 모드(For Reading), 쓰기 모드(For Writing), 추가 모드(For Appending) 등을 지정합니다.
  • Form (폼): 사용자 정의 폼을 화면에 표시할 때 다른 창과 상호작용을 막을지(vbModal) 여부를 결정합니다.
  • IMEStatus (입력기 상태): 현재 키보드 입력 상태가 한글인지 영문인지 등을 확인하는 데 사용됩니다.
  • Keycode (키 코드): vbKeyF1, vbKeyEnter처럼 키보드의 각 키를 나타내는 고유한 코드입니다.
  • Miscellaneous (기타): vbCrLf(줄 바꿈)처럼 특정 분류에 속하지 않는 다양한 상수들이 포함됩니다.
  • MsgBox (메시지 박스): 메시지 상자에 표시될 버튼(vbOKCancel), 아이콘(vbInformation) 등의 모양과 동작을 지정합니다.
  • QueryClose (닫기 질의): 사용자 정의 폼이 어떻게 닫히고 있는지를 나타냅니다. (예
  • Shell (셸): 외부 프로그램을 실행할 때 창의 스타일(숨김, 최소화 등)을 지정합니다.
  • SpecialFolder (특수 폴더): '내 문서', '바탕 화면' 등 윈도우의 특수 폴더 경로를 쉽게 찾을 수 있도록 돕습니다.
  • StrConv (문자열 변환): 문자열을 대문자로, 소문자로, 또는 유니코드로 변환하는 등 다양한 변환 방식을 지정합니다.
  • System Color (시스템 색상): 윈도우 테마에 설정된 창 배경색, 스크롤바 색상 등을 가져올 때 사용합니다.
  • Tristate (세 가지 상태): 확인란(Checkbox) 등에서 참(True), 거짓(False) 외에 '설정 안 됨' 또는 '기본값' 상태를 나타낼 때 사용합니다.

 

3. Data types (데이터 형식)

변수에 저장될 데이터의 종류를 지정합니다. 예를 들어, Integer(정수), String(문자열), Date(날짜), Boolean(참/거짓) 등이 있으며, 데이터 형식에 따라 메모리 사용량과 처리 방식이 달라집니다.

 

데이터 형식 (Data type) 메모리 크기 (Storage size) 값의 범위 (Range)
Boolean (불리언) 2 바이트 True 또는 False (참 또는 거짓)
Byte (바이트) 1 바이트 0 ~ 255
Collection (컬렉션) 알 수 없음 개체(Object)의 참조
Currency (통화) 8 바이트 -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807 (소수점 4자리까지의 고정 소수점 숫자)
Date (날짜) 8 바이트 100년 1월 1일 ~ 9999년 12월 31일
Decimal (10진수) 14 바이트 ±79,228,162,514,264,337,593,543,950,335 (소수점 없는 경우)
또는 소수점 이하 28자리까지의 숫자
Dictionary (딕셔너리) 알 수 없음 개체(Object)의 참조
Double (배정밀도 부동 소수점) 8 바이트 음수: -1.797...E+308 ~ -4.940...E-324
양수: 4.940...E-324 ~ 1.797...E+308
Integer (정수) 2 바이트 -32,768 ~ 32,767
Long (긴 정수) 4 바이트 -2,147,483,648 ~ 2,147,483,647
LongLong (아주 긴 정수) 8 바이트 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
(64비트 시스템에서만 유효)
LongPtr (포인터 정수) 32비트: 4 바이트
64비트: 8 바이트
32비트: Long과 동일
64비트: LongLong과 동일
Object (개체) 4 바이트 모든 개체(Object)의 참조
Single (단정밀도 부동 소수점) 4 바이트 음수: -3.402...E+38 ~ -1.401...E-45
양수: 1.401...E-45 ~ 3.402...E+38
String (가변 길이 문자열) 10 바이트 + 문자열 길이 0 ~ 약 20억 자
String (고정 길이 문자열) 문자열 길이 1 ~ 약 65,400 자
Variant (숫자형) 16 바이트 Double의 범위까지의 모든 숫자
Variant (문자형) 22 바이트 + 문자열 길이 가변 길이 String과 동일
User-defined (사용자 정의 형식) 각 요소에 필요한 크기의 합 각 요소의 범위는 해당 요소의 데이터 형식과 동일

 

4. Directives (지시문)

VBA 코드가 실행되기 전, 컴파일러(번역기)에게 특정 작업을 지시하는 특별한 명령어입니다. 대표적으로 #If...Then...#Else는 특정 조건에 따라 코드의 일부를 컴파일에 포함하거나 제외할 때 사용됩니다.

 

 

5. Events (이벤트)

사용자의 특정 행동(예: 버튼 클릭, 셀 선택)이나 시스템의 상태 변화에 따라 **자동으로 실행되는 코드 블록(프로시저)**입니다. 예를 들어, '워크시트를 활성화했을 때(Worksheet_Activate)' 코드를 실행하는 것이 이벤트 처리입니다.

 

 

 

6. Functions (함수)

특정 작업을 수행하고 그 결과를 값으로 반환하는 코드 묶음입니다. 엑셀의 SUM 함수처럼 VBA에서도 직접 함수를 만들어 계산 결과를 되돌려 받을 수 있습니다. (Sub 프로시저와는 달리 값을 반환하는 것이 특징입니다.)

 

 

7. Keywords (키워드 / 예약어)

VBA 언어에서 특별한 의미를 가지고 있어 문법의 일부로 예약된 단어들입니다. 예를 들어 Dim, If, For, Sub 등은 이미 기능이 정해져 있으므로 변수나 함수 이름으로 사용할 수 없습니다.

 

 

 

8. Microsoft Forms (사용자 정의 폼)

사용자로부터 정보를 입력받거나 옵션을 선택하게 하는 대화 상자(창)를 직접 디자인할 수 있는 기능입니다. 텍스트 상자, 버튼, 목록 상자 등을 배치하여 전문적인 프로그램을 만들 수 있습니다.

 

  • Collections, controls, and objects (컬렉션, 컨트롤, 개체): 사용자 정의 폼(UserForm)을 구성하는 모든 '부품'과 그 묶음에 대한 설명입니다.
  • Dialog boxes (대화 상자): 우리가 만드는 사용자 정의 폼(UserForm) 자체가 바로 '대화 상자'입니다. 이 항목에서는 폼을 화면에 표시하고(Show), 숨기는(Hide) 방법 등 대화 상자로서의 폼을 제어하는 방법에 대해 설명합니다.
  • Events (이벤트): 사용자의 행동이나 시스템의 상태 변화에 따라 자동으로 실행되는 '사건'을 의미합니다. '...할 때'라는 조건에 해당하는 코드를 작성하는 부분입니다.
  • Examples (예제): 위에서 설명한 개체, 속성, 메서드, 이벤트를 활용하여 실제로 코드를 작성한 다양한 예시를 보여줍니다. 코드를 처음 작성할 때 가장 참고하기 좋은 부분입니다.
  • Methods (메서드): 개체가 수행할 수 있는 구체적인 '동작' 또는 '행동' (동사)을 의미합니다.
  • Properties (속성): 개체가 가지고 있는 고유한 '특징'이나 '상태 정보' (형용사)를 의미합니다. 컨트롤의 모양, 크기, 색, 글자 등을 변경할 때 사용합니다.

 

9. Objects (개체)

VBA가 제어할 수 있는 모든 대상을 의미합니다. 예를 들어 엑셀 응용 프로그램 자체(Application), 통합 문서(Workbook), 워크시트(Worksheet), 특정 셀(Range) 등이 모두 개체입니다. 각 개체는 고유의 속성(Properties)과 메서드(Methods)를 가집니다.

 

  • Collection (컬렉션):여러 개의 항목(데이터, 개체 등)을 순서대로 담을 수 있는 '보관함'입니다. .Add로 추가하고 .Item으로 특정 항목을 꺼낼 수 있습니다.
  • Debug (디버그):코드 실행 중에 변수의 값이나 특정 메시지를 '직접 실행' 창에 출력하여 테스트(디버깅)할 때 사용하는 개체입니다. Debug.Print가 가장 대표적인 사용법입니다.
  • Dictionary (딕셔너리):고유한 '키(Key)'와 그에 해당하는 '값(Value)'을 한 쌍으로 저장하는 고급 보관함입니다. 사전에서 단어를 찾듯, 키를 이용해 값을 빠르고 쉽게 찾을 수 있습니다.
  • Drive (드라이브):컴퓨터의 C
  • Drives collection (드라이브 컬렉션):컴퓨터에 연결된 모든 드라이브의 목록을 담고 있는 개체입니다.
  • Err (오류 개체):VBA 코드 실행 중 오류가 발생했을 때, 해당 오류에 대한 정보(오류 번호, 설명 등)를 담고 있는 개체입니다. On Error 구문과 함께 사용되어 오류를 처리합니다.
  • File (파일):하나의 파일을 나타내는 개체입니다. 파일의 이름, 크기, 만들어진 날짜 등의 속성을 확인할 수 있습니다.
  • Files collection (파일 컬렉션):특정 폴더 안에 있는 모든 파일의 목록을 담고 있는 개체입니다.
  • FileSystemObject (파일 시스템 개체):파일, 폴더, 드라이브를 쉽게 다룰 수 있도록 다양한 기능을 제공하는 강력한 개체입니다. 파일 생성, 복사, 이동, 삭제 등 파일 시스템과 관련된 거의 모든 작업을 할 수 있습니다.
  • Folder (폴더):**하나의 폴더(디렉터리)**를 나타내는 개체입니다. 폴더 이름, 경로 등의 정보를 가집니다.
  • Folders collection (폴더 컬렉션):특정 폴더 안에 있는 모든 하위 폴더의 목록을 담고 있는 개체입니다.
  • TextStream (텍스트 스트림):텍스트 파일(.txt)의 내용을 한 줄씩 읽거나, 새로운 내용을 쓰는 등 텍스트 파일의 입출력을 순차적으로 처리할 때 사용하는 개체입니다.
  • UserForm (사용자 정의 폼):사용자가 직접 디자인한 대화 상자(창) 자체를 의미하는 개체입니다. 이 폼 위에 버튼, 텍스트 상자 등을 올려 사용자 인터페이스를 만듭니다.

 

 

10. Operators (연산자)

값들을 계산하거나 비교하는 데 사용되는 기호입니다. +, - 같은 산술 연산자, =, > 같은 비교 연산자, And, Or 같은 논리 연산자가 있습니다.

 

연산자 (기능) 종류 설명
* operator 산술 연산자 (Arithmetic operators) 수학 계산을 수행하는 데 사용되는 연산자입니다.
^ operator
/ operator
\ operator
Mod operator
+ operator
- operator
= operator 비교 연산자 (Comparison operators) 두 값을 비교하는 데 사용되는 연산자입니다.
Is operator
Like operator
& operator 연결 연산자 (Concatenation operators) 두 문자열을 하나로 합치는 데 사용되는 연산자입니다.
+ operator
And operator 논리 연산자 (Logical operators) 논리 연산(참/거짓 판단)을 수행하는 데 사용되는 연산자입니다.
Eqv operator
Imp operator
Not operator
Or operator
Xor operator

 

11. Statements (구문)

하나의 완전한 명령을 구성하는 코드의 한 줄 또는 여러 줄을 의미합니다. 예를 들어, A = 10 이나 If A > 5 Then ... End If 전체가 하나의 구문입니다.

 

 

12. Visual Basic Add-Ins (Visual Basic 추가 기능)

만들어진 매크로나 사용자 정의 함수를 다른 사람들도 쉽게 설치하고 사용할 수 있도록 패키지화한 파일(.xlam)입니다. 엑셀에 새로운 기능을 추가하는 '플러그인'처럼 작동합니다.

 

 

* 이 페이지의 내용은 Microsoft 공식 VBA 문서를 참조하여 작성되었습니다.

 

 

댓글