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

같은 카테고리의 다른 글
엑셀 / 여러 워크시트 한 화면에서 동시에 보기

엑셀 / 여러 워크시트 한 화면에서 동시에 보기

새 창과 모두 정렬로 같은 통합 문서의 여러 시트를 함께 보는 방법을 설명합니다. 새 파일 복사와의 차이, 창별 시트 선택과 동기 스크롤도 다룹니다.

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

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

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

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

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

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

엑셀 / 로그 또는 상용로그의 값 구하기, 상용로그표 만들기

엑셀 / 로그 또는 상용로그의 값 구하기, 상용로그표 만들기

LOG·LOG10·LN의 차이와 로그 계산의 입력 조건을 설명합니다. 혼합 참조를 사용해 행과 열로 펼쳐지는 상용로그표를 만들 수 있습니다.

엑셀 / 행과 열 바꾸는 방법

엑셀 / 행과 열 바꾸는 방법

행/열 바꿈 붙여넣기로 표를 전치하는 방법을 설명합니다. 원본과 겹치지 않는 공간, 수식 참조·서식 및 TRANSPOSE 대안을 확인합니다.

엑셀 / 행의 최대 개수, 열의 최대 개수, 셀의 최대 개수

엑셀 / 행의 최대 개수, 열의 최대 개수, 셀의 최대 개수

현대 Excel 워크시트의 행·열·셀 수와 마지막 셀 주소를 설명합니다. .xls의 제한과 실제 처리 용량·숫자 정밀도는 별도 조건임을 안내합니다.

엑셀 / 메모 삽입하는 방법, 메모 삭제하는 방법, 메모 일괄 삭제하는 방법

엑셀 / 메모 삽입하는 방법, 메모 삭제하는 방법, 메모 일괄 삭제하는 방법

간단한 셀 메모와 대화형 주석을 구분하고 삽입·서식·삭제 방법을 설명합니다. 현재 시트의 메모 일괄 선택과 삭제 전 범위 확인도 안내합니다.

엑셀 / PDF 형식으로 저장하는 방법

엑셀 / PDF 형식으로 저장하는 방법

Excel의 PDF 저장 경로와 선택 영역·활성 시트·전체 통합 문서 옵션을 설명합니다. 인쇄 배율, 페이지 잘림과 저장 후 검증도 안내합니다.

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

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

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

엑셀 / 주민등록번호 뒷자리 별표로 바꾸는 방법

엑셀 / 주민등록번호 뒷자리 별표로 바꾸는 방법

REPLACE로 하이픈 유무에 따라 주민등록번호 뒷자리를 별표로 표시하는 방법을 설명합니다. 형식 검사와 원본이 남지 않는 배포용 파일 확인 절차도 안내합니다.