엑셀 / VBA / 매크로 만들고 실행하기

엑셀 매크로는 Visual Basic 편집기의 표준 모듈에 VBA 코드를 작성하고 Alt+F8에서 선택해 실행할 수 있습니다. 아래 예제는 지정한 시트의 A1 셀에 HELLO를 입력합니다. 기존 셀 값이 덮어써지므로 빈 연습 파일이나 복사본에서 진행하세요.

메뉴 경로와 단축키는 Windows용 데스크톱 Excel 기준입니다. 버전과 리본 메뉴 구성에 따라 이름·위치가 다를 수 있습니다.

실행 전 준비

VBA(Visual Basic for Applications)는 Office 작업을 자동화하는 프로그래밍 언어입니다. [개발 도구] 탭이 없다면 리본에 개발 도구 추가하기를 먼저 참고합니다. 웹용 Excel에서는 이 데스크톱 VBA 예제를 실행할 수 없습니다.

VBA 작업은 일반적인 Ctrl+Z로 되돌릴 수 있다고 가정하지 않습니다. 연습할 시트와 대상 셀을 확인하고 실행 전 파일을 별도로 저장합니다. 다른 사람이 준 매크로는 출처뿐 아니라 실제 코드의 동작도 확인하세요.

기능과 적용 제품은 Microsoft의 매크로 실행 안내, Microsoft의 매크로 보안 설정 안내, Microsoft의 ThisWorkbook 설명에서 확인할 수 있습니다.

표준 모듈 만들기

  1. [개발 도구] → [Visual Basic]을 누르거나 Alt+F11을 누릅니다.

[개발 도구] → [Visual Basic]을 누르거나 Alt+F11을 누릅니다.

Visual Basic 편집기에서 현재 연습 파일의 프로젝트를 찾습니다. 여러 파일을 열었다면 다른 통합 문서의 프로젝트에 코드를 넣지 않도록 파일 이름을 확인합니다.

Visual Basic 편집기에서 현재 연습 파일의 프로젝트를 찾습니다. 여러 파일을 열었다면 다른 통합 문서의 프로젝트에 코드를 넣지 않도록 파일 이름을 확인합니다.

  1. 해당 프로젝트를 선택하고 [삽입] → [모듈]을 누릅니다. 프로젝트 탐색기에서 마우스 오른쪽 버튼으로 같은 명령을 선택할 수도 있습니다.

해당 프로젝트를 선택하고 [삽입] → [모듈]을 누릅니다. 프로젝트 탐색기에서 마우스 오른쪽 버튼으로 같은 명령을 선택할 수도 있습니다.

새 모듈의 코드 창을 엽니다. 여기서는 시트 이벤트 코드 창이 아니라 [모듈] 아래의 표준 모듈을 사용합니다.

새 모듈의 코드 창을 엽니다. 여기서는 시트 이벤트 코드 창이 아니라 [모듈] 아래의 표준 모듈을 사용합니다.

A1 셀에 HELLO 입력하기

Sub SayHello()
    Sheet1.Range("A1").Value = "HELLO"
End Sub
  1. 위 코드를 모듈에 입력합니다. SayHello는 매크로 이름이고 Range("A1")은 값을 입력할 대상 셀입니다. 따옴표는 문자열을 표시하는 일반적인 큰따옴표를 사용합니다.

위 코드를 모듈에 입력합니다. SayHello는 매크로 이름이고 Range("A1")은 값을 입력할 대상 셀입니다. 따옴표는 문자열을 표시하는 일반적인 큰따옴표를 사용합니다.

Sheet1은 시트 탭의 표시 이름이 아니라 VBA의 코드 이름입니다. 프로젝트 탐색기에 Sheet1(시트1)처럼 표시되면 앞의 Sheet1을 뜻합니다. 코드 이름이 다르면 예제의 Sheet1을 해당 이름으로 바꾸어야 합니다.

탭 이름으로 지정하려면 ThisWorkbook.Worksheets("자료").Range("A1").Value = "HELLO"처럼 쓸 수 있습니다. 이 경우 실제 탭 이름이 ‘자료’여야 하며 ThisWorkbook은 코드를 저장한 통합 문서입니다. 활성 파일과 항상 같은 것은 아닙니다.

  1. 편집기에서 엑셀로 돌아가 [개발 도구] → [매크로]를 누르거나 Alt+F8을 누릅니다.

편집기에서 엑셀로 돌아가 [개발 도구] → [매크로]를 누르거나 Alt+F8을 누릅니다.

  1. 목록의 SayHello를 선택하고 [실행]을 누릅니다. 실행 전 A1에 보존할 값이 없는지 다시 확인합니다.

목록의 SayHello를 선택하고 [실행]을 누릅니다. 실행 전 A1에 보존할 값이 없는지 다시 확인합니다.

대상 시트의 A1에 HELLO가 입력되었는지 확인합니다. 다른 시트가 보이는 상태여도 코드는 지정된 시트에 값을 씁니다.

대상 시트의 A1에 HELLO가 입력되었는지 확인합니다. 다른 시트가 보이는 상태여도 코드는 지정된 시트에 값을 씁니다.

여러 셀로 대상 변경하기

Sub SayHello()
    Sheet1.Range("A1:A10").Value = "HELLO"
End Sub
  1. 기존 매크로에서 Range의 주소를 A1:A10으로 바꿉니다. 같은 이름의 Sub를 두 개 추가하지 말고 기존 프로시저의 내용만 수정합니다.

기존 매크로에서 Range의 주소를 A1:A10으로 바꿉니다. 같은 이름의 Sub를 두 개 추가하지 말고 기존 프로시저의 내용만 수정합니다.

다시 실행하면 A1부터 A10까지 각 셀에 같은 문구가 입력됩니다. 범위를 넓히면 그 범위의 기존 수식과 값도 바뀌므로 대상 주소를 반드시 확인하세요.

다시 실행하면 A1부터 A10까지 각 셀에 같은 문구가 입력됩니다. 범위를 넓히면 그 범위의 기존 수식과 값도 바뀌므로 대상 주소를 반드시 확인하세요.

매크로를 포함해 저장하기

  1. [다른 이름으로 저장]에서 [Excel 매크로 사용 통합 문서(*.xlsm)]를 선택합니다. .xlsx로 저장하면 VBA를 보존할 수 없습니다.

[다른 이름으로 저장]에서 [Excel 매크로 사용 통합 문서(*.xlsm)]를 선택합니다. .xlsx로 저장하면 VBA를 보존할 수 없습니다.

저장한 뒤 파일을 다시 열어 코드가 남아 있는지 확인합니다. 매크로 목록에 보이지 않으면 올바른 프로젝트의 표준 모듈에 매개변수 없는 Sub로 작성했는지 확인하고, 컴파일 오류와 보안 차단을 구분해 점검합니다. 보안 경고가 나타났다는 이유만으로 신뢰 여부를 확인하지 않은 코드를 허용하지 마세요.

같은 카테고리의 다른 글
엑셀 / 함수 / VLOOKUP, HLOOKUP, XLOOKUP

엑셀 / 함수 / VLOOKUP, HLOOKUP, XLOOKUP

VLOOKUP·HLOOKUP·XLOOKUP의 조회 방향과 정확히 일치 옵션을 비교합니다. 범위 고정, 중복 값, 다중 열 반환과 조회 오류를 해결하는 기준도 안내합니다.

엑셀 / 스파크라인 / 데이터를 시각적으로 보여주기

엑셀 / 스파크라인 / 데이터를 시각적으로 보여주기

스파크라인의 원본·위치 범위를 지정하고 모양·축·강조 지점을 설정하는 방법을 설명합니다. 일반 차트와의 차이와 올바른 삭제 방법도 다룹니다.

엑셀 / 숫자를 한글 또는 한자로 나타내는 방법

엑셀 / 숫자를 한글 또는 한자로 나타내는 방법

숫자의 셀 서식을 한글·한자로 표시하는 방법을 설명합니다. 실제 숫자 유지, TEXT로 문자열 만들기와 서식의 보안·정밀도 한계를 구분합니다.

엑셀 / 저장 시 기본 파일 형식 설정하는 방법

엑셀 / 저장 시 기본 파일 형식 설정하는 방법

기본 저장 형식을 xlsx·xlsm 등으로 지정하는 과정을 설명합니다. 기존 파일과의 차이, 매크로·CSV·구형 형식의 정보 손실도 안내합니다.

엑셀 / 함수 / IRR / 내부수익률 계산하는 함수

엑셀 / 함수 / IRR / 내부수익률 계산하는 함수

IRR에 주기적인 현금흐름을 입력하고 결과를 해석하는 방법을 설명합니다. 부호, 기간, 추정값과 수렴 오류를 확인하며 XIRR과의 차이를 구분할 수 있습니다.

엑셀 / 인쇄 / 워크시트에서 선택한 영역만 인쇄하는 방법

엑셀 / 인쇄 / 워크시트에서 선택한 영역만 인쇄하는 방법

선택 영역 인쇄와 인쇄 영역 지정의 차이를 설명합니다. 머리글·배율·미리 보기와 다음 인쇄 작업의 설정 확인을 안내합니다.

엑셀 / 틀 고정 하는 방법, 틀 고정 취소하는 방법

엑셀 / 틀 고정 하는 방법, 틀 고정 취소하는 방법

선택 셀 위·왼쪽의 행·열을 틀 고정하는 방법을 설명합니다. 첫 행·첫 열 고정, 취소와 인쇄 제목 설정의 차이도 안내합니다.

엑셀 / 함수 / DAYS / 두 날짜 사이의 일수를 계산하는 함수

엑셀 / 함수 / DAYS / 두 날짜 사이의 일수를 계산하는 함수

DAYS의 종료일·시작일 순서와 날짜 차이 계산을 설명합니다. 양끝 날짜 포함 여부, 실제 날짜 값과 업무일 계산의 차이도 확인할 수 있습니다.

엑셀 / 중복된 값 찾는 방법, 중복 항목 제거하는 방법

엑셀 / 중복된 값 찾는 방법, 중복 항목 제거하는 방법

중복 값을 표시하는 조건부 서식과 실제 제거를 구분합니다. 한 열·여러 열의 기준 선택, 행 관계 보존과 제거 후 검증·복구도 설명합니다.

엑셀 / 함수 / SUMPRODUCT / 곱의 합 구하는 함수

엑셀 / 함수 / SUMPRODUCT / 곱의 합 구하는 함수

SUMPRODUCT로 단가·수량 등 같은 위치의 값을 곱해 합산하는 방법을 설명합니다. 배열 크기, 조건 계산과 성능 문제도 함께 확인할 수 있습니다.