The Best VBA Guide (For Beginners) You’ll Ever Need

by Ryan Dube

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.

Table of Contents

    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.

    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.

    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.

    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.

    Exit mobile version