거의 모든 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 , Outlook 및 Powerpoint 에서만 사용할 수 있습니다 . 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)Worksheet 및 Activate 를 선택 하면 워크시트가 열릴 때마다 코드가 실행됩니다.
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 를 사용하기 시작하기 위해 알아야 할 모든 것을 알게 되었습니다 .
The Best VBA Guide (For Beginners) You’ll Ever Need
The VBA programming platform that runs throughout nearly all Microsoft Office products is one of the most powerful tools anyone can use to enhance their use of those products.
This VBA guide for beginners will show you how to add the Developer menu to your Office application, how to enter the VBA editor window, and how basic VBA statements and loops work so that you can get started using VBA in Excel, Word, Powerpoint, Outlook, and OneNote.
This VBA guide uses the latest version of Microsoft Office products. If you have an earlier version you may see some slight differences from the screenshots.
How To Enable & Use The VBA Editor
In any of the Office products used in this guide, you may notice that you don’t have the referenced Developer menu. The developer menu is only available in Excel, Word, Outlook, and Powerpoint. OneNote doesn’t offer a tool to edit VBA code from inside the application, but you can still reference the OneNote API to interact with OneNote from other Office programs.
You’ll learn how to do this in our upcoming Advanced VBA guide.
- To enable the Developer menu in any office product, select the File menu, and select Options from the left navigation menu.
- You’ll see an Options menu pop-up. Select Customize Ribbon from the left navigation menu.
The left list includes all available menus and menu commands available in that Office application. The list on the right are those that are currently available or activated.
- You should see Developer in the list on the right, but it will not be activated. Just select the checkbox to activate the Developer menu.
- If you don’t see Developer available on the right, then change the left Choose commands from dropdown to All Commands. Find Developer from the list and select Add>> in the center to add that menu to the Ribbon.
- Select OK when you’re done.
- Once the Developer menu is active, you can go back to your main application window and select Developer from the top menu.
- Then select View Code from the Controls group in the ribbon to open the VBA editor window.
- This will open the VBA editor window where you can type the code you’ll learn in the next few sections.
- Try adding the Developer menu to a few of the Office applications you use every day. Once you’re comfortable opening the VBA editor window, continue on to the next section of this guide.
General VBA Programming Tips for Beginners
You’ll notice when the VBA editor opens, the navigation options in the left panel look different from one Office application to the other.
This is because the available objects where you can place VBA code depend on what objects there are in the application. For example, in Excel, you can add VBA code to workbook or sheet objects. In Word, you can add VBA code to documents. In Powerpoint, only to modules.
So, don’t be surprised by the different menus. The structure and syntax of the VBA code is the same across all applications. The only difference are the objects you can reference and the actions you can take on those objects through the VBA code.
Before we dive into the different objects and actions you can take on them via VBA code, let’s first look at the most common VBA structure and syntax you can use when you write VBA code.
Where To Put VBA Code
When you’re in the VBA editor, you need to use the two dropdown boxes at the top of the editing window to choose which object you want to attach the code to, and when you want the code to run.
For example, in Excel, if you choose Worksheet and Activate, the code will run whenever the worksheet is opened.
Other worksheet actions you can use to trigger your VBA code include when the worksheet changes, when it’s closed (deactivated), when the worksheet calculation is run, and more.
When you add VBA code in the editor, always make sure to place your VBA code on the object and using the correct action that you want to use to trigger that code.
VBA IF Statements
An IF statement works in VBA just like it works in any other programming language.
The first part of the IF statement looks at whether a condition or set of conditions is true. These conditions can be joined by an AND or OR operator to link them together.
One example would be to check if a grade in a spreadsheet is above or below a “passing” grade, and assigning the pass or fail status to another cell.
If Cells(2, 2) > 75 Then Cells(2, 3) = “Pass” Else Cells(2, 3) = “Fail”
If you don’t want the entire statement on a single line, you can split it into multiple lines by adding a “_” symbol at the end of the lines.
If Cells(2, 2) > 75 Then _
Cells(2, 3) = “Pass” Else _
Cells(2, 3) = “Fail”
Using this technique can often make code much easier to read and debug.
VBA For Next Loops
IF statements are great for single comparisons, like the example above of looking at a single cell. But what if you want to loop through an entire range of cells and do the same IF statement on each?
In this case you’d need a FOR loop.
To do this, you’d need to use the length of a range, and loop through that length by the number of rows that contain data.
To do this, you need to define the range and cell variables, and loop through them. You’ll also need to define a counter so you can output the results to the appropriate row. So your VBA code would first have this line.
Dim rng As Range, cell As Range
Dim rowCounter as Integer
Define the range size as follows.
Set rng = Range(“B2:B7”)
rowCounter = 2
Finally, you can create your FOR loop to step through every cell in that range and do the comparison.
For Each cell In rng
If cell.Value > 75 Then _
Cells(rowCounter, 3) = "Pass" Else _
Cells(rowCounter, 3) = "Fail"
rowCounter = rowCounter + 1
Next cell
Once this VBA script is run, you see the results in the actual spreadsheet.
VBA While Loops
A While Loop also loops through a series of statements, just like the FOR loop, but the condition of the looping to continue is a condition remaining true.
For example, you could write the same FOR loop above, as a WHILE loop, by simply using the rowCounter variable as follows.
While rowCounter < rng.Count + 2
If Cells(rowCounter, 2) > 75 Then _
Cells(rowCounter, 3) = "Pass" Else _
Cells(rowCounter, 3) = "Fail"
rowCounter = rowCounter + 1
Wend
Note: the rng.Count + 2 terminating limit is required because the row counter starts at 2 and needs to end on row 7 where the data ends. However, the count of the range (B2:B7) is only 6, and the While loop will only end once the counter is GREATER than the counter – so the last rowCounter value needs to be 8 (or rng.Count + 2).
You could also set up the While loop as follows:
While rowCounter <= rng.Count + 1
You can only increment the range count (6) by 1, because once the rowCounter variable reaches the end of the data (row 7), the loop can finish.
VBA Do While and Do Until Loops
Do While and Do Until loops are nearly identical to While loops, but work slightly different.
- The While Loop checks whether a condition is true at the beginning of the loop.
- The Do-While Loop checks whether a condition is true after executing the statements in the loop.
- The Do-Until Loop checks whether a condition is still false after executing the loop.
In this case you would rewrite the While loop above as follows, as a Do-While loop.
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
In this case the logic doesn’t change very much, but if you want to make sure the logic comparison takes place after all of the statements are run (allowing them all to run no matter what at least once), then a Do-While or Do-Until loop is the right option.
VBA Select Case Statements
The final type of logical statement you’ll need to understand to start structuring your VBA code are Select Case statements.
Given the example above, let’s say you want to have a grading method that isn’t just pass fail. Instead, you want to assign a letter grade from A through F.
You could do this with the following Select Case statement:
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
The resulting spreadsheet after this VBA script runs looks like the one below.
Now you know everything you need to know to start using VBA in your Microsoft Office applications.