엑셀 VBA 기초 - Heeyoung-Ahn/Excel_VBA GitHub Wiki

엑셀 Macro, VBA

  • 엑셀 매크로

    반복되는 엑셀 작업을 기록해서 필요할 때마다 단축키 등을 통해서 해당 작업을 실행할 수 있게 도와주는 엑셀 기능

    • 엑셀 프로그램 안에 있는 자동화 기능
    • 여러 가지 작업을 묶어서 한 번에 실행 가능하게 해주는 기능
    • 사용자가 일련의 작업을 '매크로 기록' 하면 코드가 생성되고 그 코드를 편집 또는 바로 실행하여 같은 양식의 다른 내용의 작업을 반복하여 자동으로 실행할 수 있음
    • 엑셀 매크로와 VBA의 차이점
      → 엑셀 매크로: 반복되는 엑셀 작업을 기록하여 해당 작업을 실행할 수 있게 도와주는 엑셀 기능
      → VBA(Visual Basic for Applicaion): 매크로의 기능을 개발할 때 사용되는 프로그래밍 언어 중 하나
      VBA는 매크로를 만들기 위한 언어이고, 매크로는 VBA로 만들어진 엑셀 기능
  • VBA 구조: Code < Procedure < Module < Project
  • 매크로가 필요한 경우
    • 반복 작업을 자동화할 때
    • 수식으로 처리하기 복잡한 작업의 경우
    • 데이터 양이 많아져서 수식의 처리속도가 문제가 될 때
  • 매크로를 잘 활용하려면
    • 우선은 엑셀 기능을 잘 알아야 함
    • 매크로의 기본 기능에 대해 숙지되어 있어야 함
    • 검색과 활용 역량 필요
    • 코드를 잘 관리해야 함

Object(개체)

  • Application, Workbook, Worksheet, Range, Cell, Chart, PivotTable
  • 코드 샘플
    Application.Workbooks("파일이름").Worksheets("시트이름").Range("영역범위")

컬렉션(Collections)

  • 같은 종류의 개체의 집합
  • 개체를 참조할 때는 컬렉션("개체이름")형식으로 표현
  • 개체와 개체를 구분할 때는 '.'으로 구분
  • 컬렉션에서 특정 개체를 지정하려면 개체 이름이나 인덱스 번호 사용
  • 코드 샘플
    Worksheets(1).PrintOut
    Worksheets("Sheet2").Name = "RawData"

Property(속성)

  • OO(개체)의 값을 XX로 하라에서 XX가 속성
  • 개체의 속성값 설정: [개체].[속성] = [속성값]
  • 개체의 속성값을 반환: [개체].[속성]
  • 코드 샘플
    Worksheets("Sheet1").Range("A1").Value = "Welcome!"
    Range("A1").Font.Color = Vbblue
    Msgbox Worksheets.Count

Method(메서드)

  • 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

변수(Variable)

  • 프로그램 처리 과정에서 내용이 변경될 수 있는 자료를 저장하기 위한 것으로 숫자, 문자, 논리값 등 다양한 데이터 형식 포함

  • 자료형의 종류 및 성격, 크기

    자료형 종류 성격 크기
    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

상수(Constant)

  • 프로그램 처리 과정에서 변함없이 동일한 값을 가지는 것
  • 상수 선언 문법 Const 상수이름 AS 자료형 = "값"
    • Const banner AS String = "Excel VBA Program"

주석

  • 코드를 쉽게 이해할 수 있도록 소스코드에 대한 설명을 달아 놓은 것

Visual Basic Editor

  • 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

참조

⚠️ **GitHub.com Fallback** ⚠️