You are on page 1of 23

VBA & Excel

Barry L. Nelson
IEMS 465
Fall Quarter 2003

VBA
Is a significant subset of the stand-alone
Visual Basic programming language
It is integrated into Microsoft Office
applications (and others, like Arena)
It is the macro language of Excel
You can add
Forms for dialog boxes with user
Classes for object definitions
Modules containing procedures

Accessing VBA in Excel


Tools Macros Visual Basic Editor
Enter VBA through the navigation buttons
in the top toolbars

Visual Basic
Editor

VBA Design
Mode

Design mode is the time during which no code from the project is running and events from Excel or project will not
execute. You can leave design mode by executing a macro or using the Immediate window.

Edit
Window
Options

VB Edit Window

Project Explorer

Code Window
Property Inspector

Variables
Declare by Dim
Better to use Data Types:
Dim amount As Double
Dim year As Integer
Dim name As String
Other data types: Boolean, Byte,
Currency, Date
Default (no type) is Variant

Variable(contd.)
% - integer
& - long integer
! - single # - double
@ currency
$ - string
anIntegerValue% =3, aString$ = "hallo"

Can modify with scope (outside procedure)


Private I As Integer
Public billsPaid As Currency
Make values permanent
Static yourName As String
Multiple variables
Private test, amount, J As Integer

Constants
[Public|Private] Const constantName [As
type] = expression
Public Const PI = 3.1, NumPLANETS = 9
Const PI2 = PI * 2
Const RELEASE = #1/1/99/#

Control Structures
Decision
If anyDate < Now Then anyDate =
Now
If anyDate < Now Then
anyDate = Now
End If
If Then Else

Decisions(contd.)
If Index = 0 Then
CopyActiveControl
ClearActiveControl
Else If Index = 1 Then
CopyActiveControl
Else If Index = 2 Then
ClearActiveControl
Else
PasteActive Control
End If

Decisions(contd.)
Select Case Index
Case 0
CopyActiveControl
ClearActiveControl
Case 1
CopyActiveControl
Case 2
ClearActiveControl
Case 3
PasteActive Control
Case Else
frmFind.Show
End Select

Loops/Iterations
Do Loop
Do While condition
statements
Loop
Do
statements
Loop While condition

Loops(contd.)
For Next
For counter = start To end [Step increment]
statements
Next counter
For Each Next
For Each element In group
statements
Next element

Exiting Control Structures


For counter = start To end [Step increment]
[statement block]
[Exit For]
[statement block]
Next [counter [, counter][, ]]
Do [ {While|Until} condition]
[statement block]
[Exit Do]
[statement block]
Loop

Exiting(contd.)
Can also exit from a procedure:
Exit Sub

Code Modules
Excel Objects (ThisWorkbook, Sheet#)
Modules
Typically we put our code here
A Module is a collection of Subs and
Functions
Insert Module

Class Modules
User Forms

Procedures
Sub (routines)
no value returned
Called without parenthesis
mySub param1, param2
Called with parenthesis
Call mySub(param1, param2)

Functions
value returned
assign return value to function name

Arguments for Procedures


Pass by Reference (default)
sub stuff(item As String)
or sub stuff(ByRef item As String)

stuff(car)
Pass by Value (must be declared)
sub stuff(ByVal item As String)
Note that arguments must be formally declared (as
must the return type of functions)

Some Useful Code


The following are some pieces of code
that are useful for doing VBA with Excel.
See the code on the course web site for
other examples.

Finding/Creating a Sheet
Dim found As Boolean
Dim sheetNext As Worksheet
' Set up mySheet sheet for output
found = False
For Each sheetNext In Worksheets
If sheetNext.Name = mySheet" Then
found = True
Exit For
End If
Next sheetNext
If found = True Then
Worksheets(mySheet").Select
ActiveSheet.UsedRange.Clear
Else
Worksheets.Add
ActiveSheet.Name = mySheet"
End If

Writing to a Sheet
Put the absolute value of the variable
Fudge in row 2, column 20 of the Sheet
named mySheet.
Worksheets(mySheet).Cells(2,20) = VBA.Abs(Fudge)

Use an Excel Function


VBA has a limited number of built-in
functions
You can access any Excel worksheet
function.
This example uses the Excel Max function
W = WorksheetFunction.Max(0, W + S - a)

Running the Code


Perhaps the easiest way to run the code is
to place your cursor in the module you
want to run and press the
Run Sub/UserForm button.
Your modules will as appear as Macros
that can be run from Excel under
Tools Macros Macros

Finishing Up
Explore what is available in the IEMS 465
code
Exercise: Write a Sub that inserts a
worksheet named Count into the
Workbook, then writes the numbers 1,2,
,10 in the first row, the first ten columns.
Use a loop to do this.

You might also like