If…Then

Overview of this Module

This module introduces the most common programming
structures used in Excel VBA, including
– Selection



If…Then
If…Then…Else
Select Case
– Repetition





For…Next
For Each…Next
Do While…Loop
Do Until…Loop
Two useful keywords typically used with programming
structures are also covered
– Exit and End
1
Overview of this Module (cont.)

In many of the programming structures covered in this
module, you will need to use arithmetic and comparison
operators
2
If…Then Statements

If…Then statements allow you to perform conditional actions
– If a condition is met, a certain action (or set of actions) is performed
– Otherwise, another set of actions may be performed

The general format for the If…Then statement is
If condition Then
action
End If

Excel VBA does not terminate programming structures
automatically after you have entered the first line
– You have to do this yourself manually
3
If…Then Statements (cont.)

Basic flowcharts for If…Then statements
Condition?
Yes
Actions
No
No
Condition?
Actions
Yes
Actions
4
If…Then Statements (cont.)

The If…Then statement defines the action to be performed if
the condition is false by using the keywords
– Else, or
– ElseIf

The ElseIf keyword helps in streamlining code that may
require the use of several nested If…Then…Else
statements
5
If…Then Statements (cont.)

Constructing If…Then statements with Else and ElseIf
If x <= 1000 Then
MsgBox “Your number is less than or equal to 1000.”
Else
If x <= 2000 Then
MsgBox “Your number is greater than 1000 but less than or equal to 2000.”
Else
MsgBox “Your number is greater than 2000”
End If
End If
6
If…Then Statements (cont.)

Constructing If…Then statements with Else and ElseIf
If x <= 1000 Then
MsgBox “Your number is less than or equal to 1000.”
ElseIf x <= 2000 Then
MsgBox “Your number is greater than 1000 but less than or equal to 2000.”
Else
MsgBox “Your number is greater than 2000”
End If
7
Logical Checks and Booleans

If…Then statements are also used with logical checks and
Boolean variables

Logical checks include the keywords And and Or
8
“And” Logical Check

The And logical check requires every condition in the
If…Then statement to be true in order for the (True Actions)
to be performed

If…Then statement with And logical check
If condition1 And condition2 And condition3 And … Then
(True Actions)
Else (or ElseIf)
(False Actions)
End If

If only one of the conditions is false, the (True Actions) will
not be executed
– If an Else or ElseIf statement exists, the (False Actions) will be
executed instead
– Otherwise, the If…Then statement will end
9
“Or” Logical Check

The Or logical check requires only one condition in the
If…Then statement to be true in order for the (True Actions)
to be performed

If…Then statement with Or logical check
If condition1 Or condition2 Or condition3 Or … Then
(True Actions)
Else (or ElseIf)
(False Actions)
End If

Every condition must be false to skip the (True Actions)
– If an Else or ElseIf statement exists, the (False Actions) will be
executed instead
– Otherwise, the If…Then statement will end
10
Using Boolean Variables

Boolean variables can also be used in If…Then statements
– We need to check if their values are True or False

Consider the following two statements
If variable = True Then
action 1
End If
-------------------------------If variable = False Then
action 2
End If
11
Using Boolean Variables (cont.)

To check if a Boolean variable is True, you can also just
state the name of the variable

Instead of the first statement in the previous slide, you can
just type
If variable Then
action 1
End If

The default Boolean value checked by Excel VBA is True
– However, YOU have to assign this value to the Boolean variable in
code
12
Select Case

The Select Case statement is used to list possible
situations in which certain actions should be performed

The general structure of the Select Case statement gives a
particular expression (which is to be evaluated) and a list of
cases of possible values of that expression
Select Case number
Case 1
MsgBox “Your number is 1.”
Case 2
MsgBox “Your number is 2.”
End Select
13
Select Case (cont.)

Flowchart representation for the Select Case statement
Case a?
Yes
Case a action(s)
No
Case b?
Yes
Case b action(s)
No
.
.
.
No
Case z?
Yes
Case z action(s)
No
Case Else action(s)
14
Select Case (cont.)

We can also give a range of values as a case instance
Select Case number
Case 1 To 5
MsgBox “Your number is in the interval [1, 5].”
Case 6 To 10
MsgBox “Your number is in the interval [6, 10].”
End Select
15
Select Case (cont.)

There is also an optional Case Else statement which can be
used to specify all other cases which are not listed
Select Case number
Case 1 To 5
MsgBox “Your number is in the interval [1, 5].”
Case 6 To 10
MsgBox “Your number is in the interval [6, 10].”
Case Else
MsgBox “Your number is smaller than 1 or greater than 10.”
End Select
16
Select Case (cont.)

You may also include conditions as cases instead of simple
instances by using the Is keyword

This is useful when replacing several ElseIf statements in an
If…Then structure
Select Case number
Case Is >= 10
MsgBox “Your number is greater than or equal to 10.”
Case Else
MsgBox “Your number is less than 10.”
End Select
17
Repetition Structures

Repetition structures (or loops) are programming structures
which allow you to repeat a set of actions a certain number
of times

The number of times a loop is repeated can be specified by
counting up to (or down to) a certain value
– For…Next
– For Each…Next

Or the loop can run continuously while or until a certain
condition is met
– Do While…Loop
– Do Until…Loop
18
Repetition Structures (cont.)

Most loops are implemented using counter-controlled
repetition

Counter-controlled repetition requires:
19
For…Next Loops

The For…Next and For Each…Next loops are used to
repeat a loop while counting up (or down) toward a certain
number
– We refer to them both generally as For Loops

The counting is performed using a simple index variable
– E.g., i, j, count, iteration
– The data type of the counting variable must be Integer
20
For…Next Loop

The most common of these two structures is the For…Next
loop

The structure of the For…Next loop is as follows:
For counter = start To end [Step n]
action(s)
Next counter

The Step value specifies how much the counter variable
should increase or decrease during each loop
– If not specified, the default Step value is 1
21
For…Next Loop (cont.)

Basic flowchart for the For…Next loop
Establish initial value of
control variable
Determine if final value
of control variable has
been reached
counter = 1
counter <= 10?
(implicit)
Yes
Body of loop
This can be
multiple statements
No
22
counter = counter + 1
(implicit)
Increment
the control
variable
For…Next Loop (cont.)

If you want to count up towards a number, the Step value
should be positive and the start value should be less than
the end value
For i = 1 to 10 Step 2
action(s)
Next i

If you wish to count down to a number, the Step value should
be negative and the start value should be greater than the
end value
For i = 10 to 1 Step -1
actions
Next i
23
For Each…Next Loop

The For Each…Next loop works almost identically to the
For…Next loop
– The only difference is that the For Each…Next loop is generally used
to manipulate objects
– In each iteration of the loop, actions are performed on a new object

Example code using For Each…Next
24
Do Loops

There are two main types of Do Loops
– Do While…Loop
– Do Until…Loop

These Do Loops perform a set of actions repeatedly while
or until a condition is met

There are two main structures for these loops
– Specify While or Until condition before actions
– Specify While or Until condition after actions
25
Do Loops (cont.)

Basic flowcharts for Do Loops
Do While…Loop
Condition?
Yes
Do Until…Loop
Actions
Condition?
No
Yes
26
No
Actions
Do Loops (cont.)

In the structure below, a While condition is considered
before a set of actions is performed
count = 1
Do While count < 10
actions
count = count + 1
Loop

In the structure below, the set of actions are performed and
then the While condition is checked before the actions are
repeated
count = 1
Do
actions
count = count + 1
Loop While count < 10
27
Do Loops (cont.)

Boolean variables can also be used in Do Loops
– The Boolean variable becomes the condition for the Do While or Do
Until loops

Do Loops that used Boolean variables usually include a
nested If…Then statement which would change the value of
the Boolean variable once a certain result is found
Do While found = False
actions
If x > 100 Then
found = True
End If
Loop
28
Do Loops (cont.)

Failure to provide the body of a Do While…Loop statement
with an action that eventually causes the loop continuation
condition to become false is a logic error

Failure to provide the body of a Do Until…Loop statement
with an action that eventually causes the loop-termination
condition to become true is a logic error

Such repetition statements never terminate, resulting in a
logic error called an infinite loop
29
Exit Statements

As we develop and run longer programming structures such
as nested If…Then statements and Do Loops, we may want
a way to exit the current set of actions at any time

We may also want to use this option while running any sub
procedure or function procedure

VBA provides several Exit Statements which allow current
actions to stop
– Program control is transferred to
 Other statement within the same sub procedure
 A different sub procedure
 Program terminates
30
Exiting Procedures

To exit a procedure, we use either Exit Sub or Exit
Function
– The choice depends on whether we are currently running a sub
procedure or a function procedure

When the Exit Sub statement is used, the sub procedure will
stop execution

When Exit Function is used, the function procedure will stop
execution
– The program will return to the point in the code from which the
function was called
31
Exiting Loops

To exit a loop, we use Exit For or Exit Do
– Exit For  If we are executing For…Next or For Each…Next loops
– Exit Do  If we are executing Do…While or Do…Until loops

Exit For will stop executing a For…Next or For Each…Next
loop and move to the next line of code after the Next
statement

The Exit Do code will stop executing a Do Loop and move to
the next line of code after the Loop statement
32
Exiting Loops (cont.)

These statements can also be used with nested loops

The exit statement will apply to the inner most loop in which
it is used
Exit Statement in a For…Next Loop
Exit Statement in a Do Until Loop
For i = 1 to 100
For j = 1 to 50
StartCell.Offset(i, j).Value = i + j
If i + j > 60 Then
Exit For
End If
Next j
Next i
Do Until x >100
x = x^2
If x mod 2 = 0 Then
MsgBox “The number “ & x & “ is even.”
Exit Do
End If
x=x+1
Loop
33
Ending the Program

We can stop executing the entire program by using the End
statement
– Just as the End Sub, End Function, End If, and End With
statements end the execution of the enclosed lines of code, the End
statement will stop executing all code and exit all loops and
procedures

This can be a useful if there is some significant condition or
requirement that must be met before the program can
function correctly
34
Summary

If…Then statements allow you to perform conditional actions
– If a condition is met, a certain set of actions is performed
– If it is not, another set of actions may be performed instead

Use the Select Case statement to list possible situations in
which certain actions should be performed

Loops are programming structures that allow you to repeat a
set of actions a certain number of times

VBA provides several Exit Statements that allow current
actions to stop and moves the program to ensuing code
35