엑셀 VBA 기초 - Heeyoung-Ahn/Excel_VBA GitHub Wiki
- 엑셀 매크로
반복되는 엑셀 작업을 기록해서 필요할 때마다 단축키 등을 통해서 해당 작업을 실행할 수 있게 도와주는 엑셀 기능
- 엑셀 프로그램 안에 있는 자동화 기능
- 여러 가지 작업을 묶어서 한 번에 실행 가능하게 해주는 기능
- 사용자가 일련의 작업을 '매크로 기록' 하면 코드가 생성되고 그 코드를 편집 또는 바로 실행하여 같은 양식의 다른 내용의 작업을 반복하여 자동으로 실행할 수 있음
- 엑셀 매크로와 VBA의 차이점
→ 엑셀 매크로: 반복되는 엑셀 작업을 기록하여 해당 작업을 실행할 수 있게 도와주는 엑셀 기능
→ VBA(Visual Basic for Applicaion): 매크로의 기능을 개발할 때 사용되는 프로그래밍 언어 중 하나
→ VBA는 매크로를 만들기 위한 언어이고, 매크로는 VBA로 만들어진 엑셀 기능
- VBA 구조: Code < Procedure < Module < Project
- 매크로가 필요한 경우
- 반복 작업을 자동화할 때
- 수식으로 처리하기 복잡한 작업의 경우
- 데이터 양이 많아져서 수식의 처리속도가 문제가 될 때
- 매크로를 잘 활용하려면
- 우선은 엑셀 기능을 잘 알아야 함
- 매크로의 기본 기능에 대해 숙지되어 있어야 함
- 검색과 활용 역량 필요
- 코드를 잘 관리해야 함
- Application, Workbook, Worksheet, Range, Cell, Chart, PivotTable
- 코드 샘플
Application.Workbooks("파일이름").Worksheets("시트이름").Range("영역범위")
- 같은 종류의 개체의 집합
- 개체를 참조할 때는
컬렉션("개체이름")
형식으로 표현 - 개체와 개체를 구분할 때는 '.'으로 구분
- 컬렉션에서 특정 개체를 지정하려면 개체 이름이나 인덱스 번호 사용
- 코드 샘플
Worksheets(1).PrintOut
Worksheets("Sheet2").Name = "RawData"
- OO(개체)의 값을 XX로 하라에서 XX가 속성
- 개체의 속성값 설정:
[개체].[속성] = [속성값]
- 개체의 속성값을 반환:
[개체].[속성]
- 코드 샘플
Worksheets("Sheet1").Range("A1").Value = "Welcome!"
Range("A1").Font.Color = Vbblue
Msgbox Worksheets.Count
- OO(개체)가 XX한다에서 XX가 메서드
[개체].[메서드], [개체].[메서드(인수1, 인수2, ...)]
- 코드 샘플
Cells(1,1).CurrentRegion.ClearContents
Worksheets("Sheet1").Columns(1).Find(What:="Find Text", LookAt:= xlWhole)
Workbooks.Add
Application.Union(Columns(1), Columns(3)).Select
-
프로그램 처리 과정에서 내용이 변경될 수 있는 자료를 저장하기 위한 것으로 숫자, 문자, 논리값 등 다양한 데이터 형식 포함
-
자료형의 종류 및 성격, 크기
자료형 종류 성격 크기 Object 개체 셀, 시트, 파일 등 4byte Byte 숫자 0~255(작은정수) 1byte Integer 숫자 -32,768~32,767(정수) 2byte Long 숫자 -2,147,483,648~2,147,483,647(긴정수) 4byte Single 숫자 소수 4byte Double 숫자 긴소수 8byte String 문자 텍스트 문자열 길이 Boolean 논리값 True or False 2byte Date 날짜&시간 8byte Currency 통화 8byte Varient 모두 숫자는 16byte, 문자는 22byte + 문자길이 ※ 변수 선언을 안하면 Varient 형식으로 자동 설정됨.
-
변수 선언 문법
Dim 변수이름 AS 자료형(DataType)
Dim i AS Integer
Dim cntR AS Integer, cntC AS Integer
-
Dim rngDB as Range Set rngDB = Cells(1,1).CurrentRegion
- 프로그램 처리 과정에서 변함없이 동일한 값을 가지는 것
- 상수 선언 문법
Const 상수이름 AS 자료형 = "값"
Const banner AS String = "Excel VBA Program"
- 코드를 쉽게 이해할 수 있도록 소스코드에 대한 설명을 달아 놓은 것
- VBE 단축키: Alt + F11
- VBE 화면구성: 프로젝트 탐색기(Ctrl + R), 속성 창(F4), 코드 창(F7), 직접실행창(Ctrl + G)
- 프로젝트 탐색기
- 시트 모듈: 특정 시트에만 해당하는 모듈로 이벤트 모듈이라고도 함
- ThisWorkbook 모듈: 해당 엑셀 파일에 대한 이벤트 모듈
- 폼 모듈: 입력, 조회 등의 폼을 만들 때 사용
- 일반 모듈: 가장 많이 사용되는 모듈로 매크로 작성 시 일반 모듈을 더블 클릭하여 코드 창에 코드를 입력합니다.
- 클래스 모듈
- 속성 창
- 개체(프로젝트 탐색기의 각 모듈이 모두 개체)에 대한 상태나 속성을 바꿀 때 사용
- 주로 폼 모듈에서 각 개체의 속성이나 상태를 변경할 때 사용
- 코드 창
- 실제로 코딩이 이루어지는 공간
- Code < Procedure < Module < Project
- Procedure는 Sub ~ End Sub
- 주석: '를 먼저 입력하면 주석처리 됨 / 녹색으로 표시
- 키워드: 매크로에서 정해놓은 단어 / 예) Sub / 파랑색으로 표시
- 코드: VBA 함수, 개체(Object), 속성(Property), 메서드(Method), 변수, 상수 등 / 검정색으로 표시
- 오류: 컴파일(구문) 오류가 발생된 코드 줄 / 빨강색으로 표시
- 코드 창 좌측 하단의 첫 번째 단추: 현재 커서가 있는 프로시저만 코드 창에 표시
- 코드 창 좌측 하단의 두 번째 단추: 현재 모듈의 전체 프로시저를 코드 창에 표시
- 기타
- 직접 실행 창(보기 > 직접 실행 창): 한 줄 짜리 코드를 입력하여 직접 실행해 볼 수 있음(Ctrl + G)
- 코드 분석을 위해 줄 단위 코드 실행은 F8, 프로시저 단위 실행은 Shift + F8
- 지역 창: 현재 프로시저에서 모든 변수에 현재 저장된 값을 실행 중에 확인할 수 있음
- 조사식 창: 특정 변수만 사용자가 선택적으로 실행 중에 확인할 수 있음.
- 코드 창에서 변수를 선택하여 이 창에 드래그 앤 드롭
- 코드 창에서 마우스 오른 쪽 메뉴 > 조사식 추가
- Shift + F9