엑셀 / 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로 작성했는지 확인하고, 컴파일 오류와 보안 차단을 구분해 점검합니다. 보안 경고가 나타났다는 이유만으로 신뢰 여부를 확인하지 않은 코드를 허용하지 마세요.

같은 카테고리의 다른 글
엑셀 / 통합 문서 모든 시트 대상으로 검색하는 방법

엑셀 / 통합 문서 모든 시트 대상으로 검색하는 방법

찾기 범위를 통합 문서로 바꾸어 여러 시트를 검색하는 방법을 설명합니다. 수식·값, 대소문자·전체 일치·서식 옵션과 일괄 바꾸기의 주의점도 다룹니다.

엑셀 / 피벗 테이블 / 외부 파일 시트의 데이터로 피벗 테이블 만드는 방법

엑셀 / 피벗 테이블 / 외부 파일 시트의 데이터로 피벗 테이블 만드는 방법

다른 통합 문서의 표·범위를 피벗 테이블 원본으로 지정하는 과정을 설명합니다. 파일 열림 상태·경로·권한·연결 방식에 따른 새로 고침 차이도 다룹니다.

엑셀 / 함수 / TEXTJOIN / 여러 텍스트를 하나로 합치는 함수

엑셀 / 함수 / TEXTJOIN / 여러 텍스트를 하나로 합치는 함수

TEXTJOIN의 구분자·빈 셀 옵션을 비교하고 여러 셀을 한 문장으로 연결하는 예제를 안내합니다. 날짜·숫자 서식과 결과 길이 제한도 설명합니다.

엑셀 / 나누기, 몫 구하기, 나머지 구하기

엑셀 / 나누기, 몫 구하기, 나머지 구하기

나눗셈 연산자와 QUOTIENT·MOD의 결과를 비교합니다. 0으로 나누는 오류와 음수에서 몫·나머지가 계산되는 방식도 예제로 설명합니다.

엑셀 / 빈 셀, 빈 셀이 있는 행, 빈 셀이 있는 열 삭제하는 방법

엑셀 / 빈 셀, 빈 셀이 있는 행, 빈 셀이 있는 열 삭제하는 방법

이동 옵션으로 실제 빈 셀을 선택하고 셀·행·열을 삭제하는 방법을 설명합니다. 일부만 빈 행과 완전히 빈 행의 차이, 행 데이터가 어긋나는 위험도 다룹니다.

엑셀 / 기호, 특수 문자 입력하는 방법

엑셀 / 기호, 특수 문자 입력하는 방법

삽입 탭의 기호와 Windows 한글 입력기의 자음·한자 조합으로 특수 문자를 넣습니다. 글꼴 지원, 계산 기호와 문자 및 실제 체크박스의 차이도 설명합니다.

엑셀 / 함수 / RADIANS, DEGREES / 도를 라디안으로, 라디안을 도로 변환하는 함수

엑셀 / 함수 / RADIANS, DEGREES / 도를 라디안으로, 라디안을 도로 변환하는 함수

RADIANS·DEGREES로 도와 라디안을 변환하는 예제를 안내합니다. PI()의 사용과 삼각함수에 잘못된 각도 단위를 넣는 문제도 설명합니다.

엑셀 / VBA / Visual Basic Editor 글꼴 변경하는 방법

엑셀 / VBA / Visual Basic Editor 글꼴 변경하는 방법

VBA 편집기의 글꼴과 크기·코드 색상을 변경하는 위치를 안내합니다. 셀 글꼴과의 차이, 한글·숫자 구분과 변경 전 설정 보관 방법도 설명합니다.

엑셀 / 함수 / RANK, RANK.EQ, RANK.AVG / 순위 구하는 함수

엑셀 / 함수 / RANK, RANK.EQ, RANK.AVG / 순위 구하는 함수

RANK·RANK.EQ·RANK.AVG의 순위 기준과 동점 처리를 비교합니다. 범위 고정과 오름차순·내림차순 예제로 순위표를 만들 수 있습니다.

엑셀 / 셀 내용을 그림으로 복사하기

엑셀 / 셀 내용을 그림으로 복사하기

그림으로 복사 기능으로 셀 범위를 이미지로 붙여넣는 방법을 설명합니다. 화면·인쇄 모양과 그림·비트맵 형식, 선명도 및 데이터 편집의 차이를 다룹니다.