당신에게 필요한 최고의 VBA 가이드(초보자용)

거의 모든 Microsoft Office 제품에서 실행 되는 VBA 프로그래밍(VBA programming) 플랫폼 은 누구나 해당 제품의 사용을 향상시키는 데 사용할 수 있는 가장 강력한 도구 중 하나입니다.

이 초보자를 위한 VBA 가이드에서는 (VBA)Office 응용 프로그램에 (Office)개발자(Developer) 메뉴를 추가하는 방법 , (Powerpoint)VBA 편집기 창 에 들어가는 방법(VBA) , Excel(VBA) , Word (Excel),(Word) Powerpoint , 아웃룩(Outlook) , 원노트(OneNote) .

VBA 가이드는 최신 버전의 Microsoft Office 제품을 사용합니다. 이전 버전이 있는 경우 스크린샷과 약간의 차이가 있을 수 있습니다.

VBA 편집기 활성화 및 사용 방법(How To Enable & Use The VBA Editor)

이 가이드에 사용된 모든 Office 제품에는 참조 (Office)된 개발자(Developer) 메뉴 가 없다는 것을 알 수 있습니다 . 개발자 메뉴는 Excel , Word , OutlookPowerpoint 에서만 사용할 수 있습니다 . OneNote 는 응용 프로그램 내부에서 (OneNote)VBA 코드 를 편집하는 도구를 제공하지 않지만 여전히 OneNote API 를 참조하여 다른 Office 프로그램  에서 OneNote 와 상호 작용할 수 있습니다.

앞으로 있을 고급 VBA(Advanced VBA) 가이드에서 이 작업을 수행하는 방법을 배우게 됩니다.

  • 모든 사무용 제품에서 개발자(Developer) 메뉴 를 활성화하려면 파일(File) 메뉴를 선택 하고 왼쪽 탐색 메뉴에서  옵션 을 선택합니다.(Options)
  • 옵션(Options) 메뉴 팝업이 표시 됩니다. 왼쪽 탐색 메뉴에서 리본 사용자 지정(Customize Ribbon) 을 선택 합니다.

왼쪽 목록에는 해당 Office(Office) 응용 프로그램 에서 사용할 수 있는 모든 메뉴와 메뉴 명령이 포함됩니다 . 오른쪽 목록은 현재 사용 가능하거나 활성화된 목록입니다.

  • 오른쪽 목록에 개발자(Developer) 가 표시되어야 하지만 활성화되지는 않습니다. 개발자(Developer) 메뉴 를 활성화하려면 확인란을 선택하기 만 하면 됩니다.(Just)

  • 오른쪽에 개발자(Developer) 사용 가능 이 표시되지 않으면 왼쪽 에서 명령 선택(Choose commands) 드롭다운을 모든 명령(All Commands) 으로 변경합니다 . 목록에서 개발자(Developer) 를 찾고 중앙에서 Add>>리본(Ribbon) 에 추가합니다 .
  • 완료되면 확인(OK) 을 선택 합니다.
  • 개발자(Developer) 메뉴가 활성화 되면 메인 애플리케이션 창으로 돌아가 상단 메뉴에서  개발자 를 선택할 수 있습니다.(Developer)
  • 그런 다음 리본 의 컨트롤 그룹에서 (Controls)코드 보기 를 선택하여 (View Code)VBA 편집기 창을 엽니다.

  • 그러면 다음 몇 섹션에서 배울 코드를 입력할 수 있는 VBA 편집기 창이 열립니다.(VBA)

  • 매일 사용 하는 몇 가지 Office 응용 프로그램에 (Office)개발자(Developer) 메뉴를 추가해 보세요 . VBA 편집기 창을 여는 데 익숙해지면 이 가이드의 다음 섹션을 계속 진행합니다.

초보자를 위한 일반 VBA 프로그래밍 팁(General VBA Programming Tips for Beginners)

VBA 편집기가 열리면 왼쪽 패널의 탐색 옵션이 Office 응용 프로그램 마다 다르게 표시 됩니다.

VBA 코드 를 배치할 수 있는 사용 가능한 개체는 응용 프로그램에 있는 개체에 따라 다르기 때문 입니다. 예를 들어 Excel 에서 통합 문서 또는 시트 개체 에 VBA 코드를 추가할 수 있습니다 . Word 에서는 문서에 VBA 코드를 추가할 수 있습니다 . Powerpoint 에서는 모듈에만 적용됩니다.

따라서 다양한 메뉴에 놀라지 마십시오. VBA 코드 의 구조와 구문은 모든 응용 프로그램에서 동일합니다. 유일한 차이점은 참조할 수 있는 개체와 VBA(VBA) 코드 를 통해 해당 개체에 대해 수행할 수 있는 작업 입니다.

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

VBA 코드를 넣을 위치(Where To Put VBA Code)

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

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

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

편집기에서 VBA(VBA) 코드 를 추가할 때 항상 개체에 VBA 코드를 배치하고 해당 코드를 트리거하는 데 사용할 올바른 작업을 사용하는지 확인하십시오.

VBA IF 문(VBA IF Statements)

IF 문은 다른 프로그래밍 언어에서 작동하는 것처럼 VBA 에서 작동합니다.(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(VBA For Next Loops)

IF 문은 단일 셀을 보는 위의 예와 같이 단일 비교에 적합합니다. 그러나 전체 셀 범위를 반복하고 각각에 대해 동일한 IF 문을 수행하려면 어떻게 해야 합니까?

이 경우 FOR 루프가 필요합니다. 

이렇게 하려면 범위의 길이를 사용하고 데이터를 포함하는 행 수만큼 해당 길이를 반복해야 합니다.

이렇게 하려면 범위 및 셀 변수를 정의하고 반복해야 합니다. 또한 결과를 적절한 행에 출력할 수 있도록 카운터를 정의해야 합니다. 따라서 VBA 코드에는 먼저 이 줄이 있습니다.

Dim rng As Range, 셀 As Range (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 script) 가 실행되면 실제 스프레드시트에 결과가 표시됩니다.

VBA while 루프(VBA While Loops)

While 루프 는 (Loop)FOR 루프 와 마찬가지로 일련의 문 을 반복하지만 계속되는 루프의 조건은 true로 남아 있는 조건입니다.

예를 들어 다음과 같이 단순히 rowCounter 변수를 사용하여 위 의 동일한 FOR 루프를 (FOR)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이고 카운터가 카운터보다 GREATER(GREATER) 인 경우 에만 While 루프가 종료됩니다. 따라서 마지막 rowCounter 값은 8(또는 rng.Count + 2)이어야 합니다.

다음과 같이 While 루프를 설정할 수도 있습니다.

While rowCounter <= rng.Count + 1

rowCounter 변수가 데이터의 끝에 도달하면(행 7) 루프가 완료될 수 있기 때문에 범위 개수(6)를 1만큼만 증가시킬 수 있습니다.

VBA Do While 및 Do When 루프(VBA Do While and Do Until Loops)

Do While 및 Do When 루프는 While 루프와 거의 동일하지만 작동 방식이 약간 다릅니다.

  • While 루프(While Loop) 는 루프 시작 시 조건이 참인지 확인합니다.
  • Do-While 루프(Do-While Loop) 는 루프 의 명령문을 실행한 후 조건이 참인지 확인합니다.
  • Do-Until 루프(Do-Until Loop) 는 루프를 실행한 후에도 조건이 여전히 거짓인지 확인합니다.

이 경우 위의 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 선택 사례 문(VBA Select Case Statements)

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(Microsoft Office) 응용 프로그램 에서 VBA 를 사용하기 시작하기 위해 알아야 할 모든 것을 알게 되었습니다 .



About the author

저는 프리웨어 소프트웨어 개발자이자 Windows Vista/7 옹호자입니다. 팁과 트릭, 수리 가이드, 모범 사례를 포함하여 운영 체제와 관련된 다양한 주제에 대해 수백 편의 기사를 작성했습니다. 또한 회사인 헬프 데스크 서비스를 통해 사무실 관련 컨설팅 서비스를 제공합니다. Office 365의 작동 방식, 기능 및 가장 효과적으로 사용하는 방법을 깊이 이해하고 있습니다.



Related posts