공든탑앱 열기

VBA 프로그래밍 기초

컴퓨터활용능력 1급 · 차트·인쇄·매크로 · 약 14분

쉽게 말하면

VBA는 엑셀에게 일을 시키는 프로그래밍 언어예요. 매크로를 기록하면 엑셀이 VBA 코드를 대신 적어 주고, Alt+F11로 편집기를 열면 그 코드를 직접 고칠 수 있어요. 코드는 '무엇을(개체) 어떻게(속성·메서드)' 순서로 써요. Range("A1").Value = 10은 'A1 셀의 값을 10으로'라는 뜻이에요.

시험용 정의

VBA(Visual Basic for Applications)는 오피스 프로그램을 제어하는 언어로, Visual Basic Editor(Alt+F11)에서 프로젝트 탐색기·속성 창·코드 창을 쓰고 코드는 모듈에 저장한다. 코드 안에 커서를 두고 F5를 누르면 실행, F8은 한 줄씩 실행한다. Sub 이름() ~ End Sub는 값을 돌려주지 않는 프로시저, Function 이름() ~ End Function은 값을 돌려주는 프로시저다. 코드는 개체.속성 = 값, 개체.메서드 모양으로 쓴다. 셀은 Range("A1")·Cells(행, 열)·ActiveCell로, 열은 Columns(1)·Range("A:A"), 행은 Rows(1)·Range("1:1")로 가리킨다. 통합 문서는 Workbooks(Open·Close·Add), 활성 문서는 ActiveWorkbook(Save·Close), 엑셀 전체는 Application(Quit)이다. MsgBox(메시지, 단추+아이콘, 제목)는 단추를 누른 결과를 값으로 돌려준다. 반복은 For i = 1 To 10 ~ Next, Do While 조건 ~ Loop, 조건은 If ~ Then ~ Else ~ End If다. 워크시트 이벤트(Worksheet_Change·Worksheet_SelectionChange)에 쓴 코드는 그 시트에서만 동작한다.

비유로 이해하기

VBA 문장은 '주어.동사' 짧은 명령문이다. Range("A1")(주어) .ClearFormats(동사)는 'A1아, 서식을 지워라'는 뜻이고, .Value = 10은 'A1아, 네 값은 10이다'라는 뜻이다.

자세히

먼저 알아 둘 말

말뜻
개체(Object)셀·시트·통합 문서처럼 다룰 대상
속성(Property)개체의 성질. Value(값), Font.Bold(굵게), Interior.ColorIndex(채우기 색)
메서드(Method)개체가 하는 동작. Select, Copy, Clear, Close
프로시저Sub나 Function으로 묶은 코드 한 덩어리
이벤트셀을 바꾸거나 선택하는 등 어떤 일이 일어났을 때 자동으로 실행되는 코드의 계기

자주 나오는 코드

코드뜻
Range("B2").Value = 100B2에 100 입력
Cells(2, 3).Value2행 3열 = C2의 값
Columns("A").Font.Bold = TrueA열 글꼴 굵게 (Range("A:A")·Columns(1)도 같다)
Rows(1).RowHeight = 201행 높이
Range("A1:C3").ClearContents / ClearFormats / Clear내용만 / 서식만 / 모두 지우기
ActiveCell.Offset(1, 0).Select현재 셀 한 칸 아래 선택
ActiveWorkbook.Close활성 통합 문서만 닫기
Workbooks.Close열린 통합 문서를 모두 닫기 (엑셀은 계속 실행)
Application.Quit엑셀 종료

MsgBox 단추와 아이콘

상수모양
vbOKOnly / vbOKCancel확인 / 확인·취소
vbYesNo / vbYesNoCancel예·아니요 / 예·아니요·취소 (취소가 있으면 Esc = 취소)
vbQuestion물음표 아이콘
vbInformation정보(i) 아이콘
vbExclamation / vbCritical느낌표 / 빨간 X 아이콘

반복문 읽기

Sub 합계()
    Dim i As Integer, s As Integer
    For i = 1 To 4
        s = s + i
    Next i
    Range("A1").Value = s   ' 1+2+3+4 = 10
End Sub

For 문이 끝나면 i 는 마지막 값보다 하나 큰 5가 된다. 문제에서 반복 뒤 변수 값을 물으면 이 점을 챙긴다.

1급에서 더 나오는 것

항목알아 둘 것
개체 다루기Range("A1:C3").ClearFormats 서식만, .ClearContents 내용만, .Clear 모두 지우기. Columns("A")·Columns(1)·Range("A:A")는 A열, Rows(1)은 1행. ActiveWorkbook.Close 지금 통합 문서만 닫기, Application.Quit Excel 끝내기
메시지 상자MsgBox "내용", vbYesNoCancel + vbQuestion, "제목": 예·아니요·취소 단추, 물음표 아이콘(정보 아이콘은 vbInformation), Esc는 취소
이벤트와 반복시트 모듈의 Worksheet_Change는 값이 바뀔 때, Worksheet_SelectionChange는 선택이 바뀔 때 실행. For i = 1 To 10 Step 3은 1, 4, 7, 10으로 돌고 끝나면 i는 13. F8은 한 줄씩 실행

시험에 이렇게 나와요

확인 문제

Q1. VBA에서 [A1:C3] 영역의 서식만 지우는 코드는?

  1. Range("A1:C3").ClearFormats
  2. Range("A1:C3").Delete
  3. Range("A1:C3").ClearContents
  4. Range("A1:C3").FreeFormats
정답 보기

1번 Range("A1:C3").ClearFormats

ClearFormats는 서식만, ClearContents는 내용만, Clear는 모두 지운다. Delete는 셀 자체를 삭제한다.

Q2. VBA에서 2행 3열 셀을 가리키는 것은?

  1. Cells(2, 3)
  2. Cells(3, 2)
  3. Rows(2).Columns(3)
  4. Range("B3")
정답 보기

1번 Cells(2, 3)

Cells(행, 열). 2행 3열은 C2다.

Q3. 다음 중 B열을 가리키지 않는 것은?

  1. Range("2:2")
  2. Columns("B")
  3. Columns(2)
  4. Range("B:B")
정답 보기

1번 Range("2:2")

Range("2:2")는 2행이다.

Q4. MsgBox "저장할까요?", vbYesNo + vbQuestion 이 표시하는 것은?

  1. 확인·취소 단추만
  2. 확인 단추와 정보 아이콘
  3. 예·아니요·취소 단추와 경고 아이콘
  4. 예·아니요 단추와 물음표 아이콘
정답 보기

4번 예·아니요 단추와 물음표 아이콘

vbYesNo는 예·아니요, vbQuestion은 물음표 아이콘이다.

Q5. 엑셀은 켜 둔 채 열린 통합 문서를 닫는 코드는?

  1. ActiveCell.Close
  2. Worksheets.Quit
  3. Application.Quit
  4. Workbooks.Close
정답 보기

4번 Workbooks.Close

Application.Quit은 엑셀 자체를 종료한다.

Q6. Visual Basic Editor에서 코드를 한 줄씩 실행하는 키는?

  1. F5
  2. F2
  3. F8
  4. F11
정답 보기

3번 F8

F5는 전체 실행, F8은 한 단계씩 실행이다.

헷갈리기 쉬운 O·X

Sub 프로시저는 계산 결과를 호출한 곳에 돌려준다.

정답 보기

X 값을 돌려주는 것은 Function 프로시저다.

워크시트 이벤트(Worksheet_Change)에 쓴 코드는 모든 시트에서 동작한다.

정답 보기

X 코드를 쓴 그 시트에서만 동작한다.

Visual Basic Editor에서는 매크로를 한 단계씩 실행할 수 없다.

정답 보기

X F8로 한 줄씩 실행할 수 있다.

함께 보면 좋은 개념