Module 1 - Getting Started in VBA
Lesson 1.2 - Basic Debugging
Topic 1.2.1 - Stepping Through Code

Normally, you want your code to run as quickly as possible.  Occasionally, however, it's useful to run your code line-by-line at a much slower pace.  This allows you to check that your procedure behaves as expected when you run it.  This process is referred to as stepping through code and is one of several debugging techniques you'll use to help fix problems in your procedures.

Step through

Stepping through code allows you to run it at your own pace and watch what happens in Excel as you do so.

Files Needed

You can click here to download the sample code used in this part of the lesson.

Completed Code

The completed code is the same as the code you can find in the Files Needed section above.

The Debug Toolbar

Before beginning to debug a procedure, it can be useful to display the Debug toolbar.  To do this, choose View | Toolbars | Debug from the menu.

Debug toolbar

This toolbar contains several useful options to help find problems in your code.

 

Stepping Through a Procedure

To begin stepping through a procedure, first click somewhere within it:

Select subroutine

Click anywhere between Sub and End Sub to select the procedure you want to step through.

 

Now choose one of the options from the table below:

Menu Keyboard Toolbar
Debug | Step Into F8

When you do this, assuming that your procedure doesn't contain any syntax or compile errors, the first line of the subroutine will be highlighted in yellow:

Stepping through

This is how the procedure should look at this point.

 

At this point your procedure is in break mode, which means that it is paused and waiting for you to tell it how to proceed.  The simplest thing you can do at this point is to execute the line which is currently highlighted in yellow.  You can do this by choosing an option from the table below:

Menu Keyboard Toolbar
Debug | Step Into F8

When you do this, the currently highlighted line will be executed and the next line of code becomes highlighted:

Step to next line

Remember: the currently highlighted line hasn't been executed yet.

 

You can continue this process until you reach the end of the procedure.  It can be helpful to arrange the screen so that you can see both the Excel and VBE windows side-by-side:

Arrange screen

Arrange the windows so that you can see both your code and the workbook at the same time.

When you have your screen arranged this way you can see the effect each instruction has as you execute them one-by-one, as shown in the animation below:

Continue procedure

Continue pressing F8 to execute each line in turn.

It's important to execute the End Sub line to ensure that you exit break mode.

You can press F5 to quickly run the remaining instructions in the procedure at any point.

Stopping a Procedure

You don't have to step through an entire procedure to reach the end; you can stop your subroutine at any point by choosing to reset it.  To do this, either choose Run | Reset from the menu, or click the toolbar button shown in the diagram below:

Reset

Click this button to stop your procedure at any time.

 

Changing the Active Instruction

When you're stepping through a procedure you don't have to follow your code in the order you've written it.  You can change which instruction will be executed next by dragging the yellow arrow to different lines of code:

Reposition line

In this example the third line of code is currently the active instruction. We can drag the yellow arrow on the left of the screen to any other line to make it the active instruction. Here we're moving back to the previous line of code.

You can make changes to a line of code before executing it again:

Edit line

Editing a line of code will temporarily remove the yellow highlighting, but the yellow arrow remains visible at the left of the code window.

After editing the instruction we can resume stepping through the code by pressing F8 or choosing Debug | Step Into from the menu:

Execute current line

Pressing F8 executes the active instruction and moves to the next line.

You can then continue stepping through the procedure by pressing F8, run the procedure to its end by pressing F5, or stop the procedure by choosing Run | Reset from the menu.

You can continue to practise stepping through a procedure using the sample code provided.  When you're comfortable, move on to the next part of the lesson to learn how to use breakpoints in your code.

This page has 0 threads Add post