Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

초보자를 위한 완벽 VBA 가이드: 개발 도구 탭부터 기본 문법까지

거의 모든 Microsoft Office 제품에 내장되어 있는 VBA 프로그래밍 플랫폼은 Office 활용도를 한 단계 끌어올릴 수 있는 가장 강력한 도구 중 하나입니다.

이 초보자용 VBA 가이드에서는 Office 응용 프로그램에 '개발 도구' 메뉴를 추가하는 방법, VBA 편집기 창에 진입하는 방법, 그리고 기본적인 VBA 문과 반복문이 어떻게 작동하는지 알아봅니다. 이를 통해 Excel, Word, PowerPoint, Outlook, OneNote에서 VBA를 바로 활용할 수 있게 될 것입니다.

이 가이드는 최신 버전의 Microsoft Office 제품을 기준으로 작성되었습니다. 이전 버전을 사용 중이라면 스크린샷과 약간의 차이가 있을 수 있습니다.

VBA 편집기 활성화 및 사용 방법

이 가이드에서 다루는 Office 제품 중 하나를 열어보면 '개발 도구' 메뉴가 보이지 않는 것을 알 수 있습니다. 개발 도구 메뉴는 Excel, Word, Outlook, PowerPoint에서만 제공됩니다. OneNote는 응용 프로그램 내부에서 VBA 코드를 편집할 수 있는 도구를 제공하지 않지만, 다른 Office 프로그램에서 OneNote API를 참조하여 OneNote와 상호 작용하는 것은 가능합니다.

이 방법은 이후에 다룰 고급 VBA 가이드에서 자세히 설명할 예정입니다.

  • Office 제품에서 개발 도구 메뉴를 활성화하려면 파일 메뉴를 선택한 후, 왼쪽 탐색 메뉴에서 옵션을 클릭합니다.
  • 옵션 팝업 창이 열리면 왼쪽 탐색 메뉴에서 리본 사용자 지정을 선택합니다.

왼쪽 목록에는 해당 Office 응용 프로그램에서 사용할 수 있는 모든 메뉴와 명령이 표시되고, 오른쪽 목록에는 현재 활성화된 항목들이 표시됩니다.

  • 오른쪽 목록에서 개발 도구를 찾을 수 있을 것입니다. 아직 활성화되지 않았다면 체크박스를 선택하여 개발 도구 메뉴를 활성화합니다.
  • 만약 오른쪽 목록에 개발 도구가 보이지 않는다면, 왼쪽의 명령 선택 드롭다운을 모든 명령으로 변경합니다. 목록에서 개발 도구를 찾아 가운데의 추가 >> 버튼을 클릭하여 리본에 메뉴를 추가합니다.
  • 완료되면 확인을 클릭합니다.
  • 개발 도구 메뉴가 활성화되면 기본 응용 프로그램 창으로 돌아가 상단 메뉴에서 개발 도구를 선택합니다.
  • 그런 다음 리본의 컨트롤 그룹에서 코드 보기를 클릭하면 VBA 편집기 창이 열립니다.

VBA 편집기 창이 열리면 다음 섹션에서 배우게 될 코드를 직접 입력할 수 있습니다.

평소 자주 사용하는 여러 Office 응용 프로그램에 개발 도구 메뉴를 추가해 보세요. VBA 편집기 창을 여는 것에 익숙해지면 이 가이드의 다음 섹션으로 넘어가시면 됩니다.

초보자를 위한 VBA 프로그래밍 기본 팁

VBA 편집기를 열면 왼쪽 패널의 탐색 옵션이 Office 응용 프로그램마다 다르게 표시되는 것을 알 수 있습니다.

그 이유는 VBA 코드를 배치할 수 있는 개체가 응용 프로그램에 어떤 개체가 존재하는지에 따라 달라지기 때문입니다. 예를 들어 Excel에서는 통합 문서나 시트 개체에 VBA 코드를 추가할 수 있고, Word에서는 문서에, PowerPoint에서는 모듈에만 추가할 수 있습니다.

따라서 메뉴 구성이 다르다고 놀라지 않아도 됩니다. VBA 코드의 구조와 구문은 모든 응용 프로그램에서 동일합니다. 다른 점은 참조할 수 있는 개체와 VBA 코드를 통해 해당 개체에 수행할 수 있는 작업뿐입니다.

VBA 코드로 다양한 개체와 작업을 살펴보기 전에, 먼저 VBA 코드를 작성할 때 사용할 수 있는 가장 일반적인 VBA 구조와 구문부터 알아보겠습니다.

VBA 코드를 배치하는 위치

VBA 편집기에서는 편집 창 상단의 두 드롭다운 상자를 사용하여 코드를 연결할 개체와 코드를 실행할 시점을 선택해야 합니다.

예를 들어 Excel에서 WorksheetActivate를 선택하면, 해당 워크시트가 열릴 때마다 코드가 실행됩니다.

VBA 코드를 트리거하는 데 사용할 수 있는 다른 워크시트 이벤트로는 워크시트 내용이 변경될 때, 비활성화(닫힐)될 때, 워크시트 계산이 실행될 때 등이 있습니다.

VBA 편집기에 코드를 추가할 때는 항상 코드를 원하는 개체에 배치하고, 해당 코드를 트리거할 올바른 이벤트를 선택했는지 확인해야 합니다.

VBA IF 문

IF 문은 VBA에서도 다른 프로그래밍 언어와 마찬가지로 작동합니다.

IF 문의 첫 번째 부분은 조건 또는 조건 집합이 참인지 확인합니다. 이러한 조건은 AND 또는 OR 연산자로 연결할 수 있습니다.

한 가지 예로, 스프레드시트의 점수가 '합격' 기준 점수보다 높은지 낮은지 확인하고, 다른 셀에 합격 또는 불합격 상태를 표시하는 경우를 들 수 있습니다.

If Cells(2, 2) > 75 Then Cells(2, 3) = "Pass" Else Cells(2, 3) = "Fail"

전체 문장을 한 줄에 쓰고 싶지 않다면, 줄 끝에 "_" 기호를 추가하여 여러 줄로 나눌 수 있습니다.

If Cells(2, 2) > 75 Then _
Cells(2, 3) = "Pass" Else _
Cells(2, 3) = "Fail"

이 기법을 사용하면 코드를 훨씬 더 읽기 쉽고 디버깅하기 쉽게 만들 수 있습니다.

VBA For Next 반복문

IF 문은 위 예제처럼 단일 셀을 확인하는 것과 같은 단일 비교에 적합합니다. 하지만 전체 셀 범위를 반복하면서 각 셀에 동일한 IF 문을 적용하려면 어떻게 해야 할까요?

이 경우 FOR 반복문이 필요합니다.

이를 위해서는 범위의 길이를 사용하고, 데이터가 있는 행 수만큼 반복해야 합니다. 범위와 셀 변수를 정의하고 반복해야 하며, 결과를 적절한 행에 출력하기 위해 카운터 변수도 정의해야 합니다. 따라서 VBA 코드는 먼저 다음 줄로 시작합니다.

Dim rng As Range, cell As Range
Dim rowCounter as Integer

범위 크기는 다음과 같이 정의합니다.

Set rng = Range("B2:B7")
rowCounter = 2

마지막으로 FOR 반복문을 만들어 해당 범위의 모든 셀을 순회하며 비교를 수행합니다.

For Each cell In rng
If cell.Value > 75 Then _
Cells(rowCounter, 3) = "Pass" Else _
Cells(rowCounter, 3) = "Fail"

rowCounter = rowCounter + 1

Next cell

이 VBA 스크립트가 실행되면 실제 스프레드시트에서 결과를 확인할 수 있습니다.

VBA While 반복문

While 반복문은 FOR 반복문과 마찬가지로 일련의 문을 반복하지만, 반복을 계속할 조건이 '조건이 참으로 유지되는 동안'이라는 점이 다릅니다.

예를 들어, 위의 FOR 반복문을 rowCounter 변수를 활용하여 WHILE 반복문으로 다음과 같이 작성할 수 있습니다.

While rowCounter < rng.Count + 2
If Cells(rowCounter, 2) > 75 Then _
Cells(rowCounter, 3) = "Pass" Else _
Cells(rowCounter, 3) = "Fail"
rowCounter = rowCounter + 1
Wend

참고: rng.Count + 2라는 종료 한계가 필요한 이유는 행 카운터가 2에서 시작하여 데이터가 끝나는 7행에서 끝나야 하기 때문입니다. 그러나 범위(B2:B7)의 개수는 6개뿐이고, While 반복문은 카운터가 한계보다 커질 때만 종료되므로 마지막 rowCounter 값은 8(rng.Count + 2)이어야 합니다.

While 반복문을 다음과 같이 설정할 수도 있습니다.

While rowCounter <= rng.Count + 1

이 경우 범위 개수(6)에 1만 더하면 됩니다. rowCounter 변수가 데이터의 끝(7행)에 도달하면 반복문이 종료될 수 있기 때문입니다.

VBA Do While 및 Do Until 반복문

Do While과 Do Until 반복문은 While 반복문과 거의 동일하지만 약간 다르게 작동합니다.

  • While 반복문: 반복문 시작 시 조건이 참인지 확인합니다.
  • Do-While 반복문: 반복문 내의 문을 실행한 후 조건이 참인지 확인합니다.
  • Do-Until 반복문: 반복문 실행 후 조건이 여전히 거짓인지 확인합니다.

이 경우 위의 While 반복문을 Do-While 반복문으로 다음과 같이 다시 작성할 수 있습니다.

Do
If Cells(rowCounter, 2) > 75 Then _
Cells(rowCounter, 3) = "Pass" Else _
Cells(rowCounter, 3) = "Fail"

rowCounter = rowCounter + 1
Loop While rowCounter < rng.Count + 2

이 경우 로직은 크게 변하지 않지만, 모든 문이 실행된 후에 조건 비교가 이루어지기를 원한다면(적어도 한 번은 조건과 관계없이 모든 문이 실행되도록 하려면) Do-While 또는 Do-Until 반복문이 적합한 선택입니다.

VBA Select Case 문

VBA 코드를 구조화하기 위해 이해해야 할 마지막 논리 문 유형은 Select Case 문입니다.

위의 예제에서 단순히 합격/불합격이 아닌 평가 방식을 원한다고 가정해 보겠습니다. 대신 A부터 F까지의 등급을 부여하고 싶은 것입니다.

다음과 같은 Select Case 문으로 이를 구현할 수 있습니다.

For Each cell In rng

Select Case cell

Case 95 To 100
Cells(rowCounter, 3) = "A"
Case 85 To 94
Cells(rowCounter, 3) = "B"
Case 75 To 84
Cells(rowCounter, 3) = "C"
Case 65 To 74
Cells(rowCounter, 3) = "D"
Case 0 To 64
Cells(rowCounter, 3) = "F"
End Select

rowCounter = rowCounter + 1

Next cell

이 VBA 스크립트가 실행된 후의 스프레드시트 결과는 아래와 같습니다.

이제 Microsoft Office 응용 프로그램에서 VBA를 사용하기 시작하는 데 필요한 모든 기본 지식을 갖추셨습니다. 이 기본기를 바탕으로 반복 작업을 자동화하고 업무 효율을 크게 높여보세요.