Using Visual Basic For Applications (VBA)
Using Visual Basic For Applications (VBA)
Applications (VBA)
Jake Blanchard
University of Wisconsin
Spring 2010
VBA Macros
Macros allow one to add
significant power to Excel
They are small programs that can
be called from a spreadsheet
You can create functions or
subroutines
If you want to get fancy, you can
add a user interface as well
Using Macros
Macros are written in a Basic-like
language called Visual Basic for
Applications
Excel comes with a separate
macro editor
To create a macro, go to
Tools/Macro/Visual Basic Editor,
then within the Editor go to
Insert/Module
Creating a Function
Suppose
Function ctof(temp)
ctof = 9 / 5 * temp + 32
End Function
+, -, *, /, ^, Mod
Comparison: =, <, >, <=, >=, <>
Logical Operators: And, Eqv, Imp,
Not, Or, Xor
Intrinsic Functions: Abs, Cos, Sin,
Tan, Atn (arc tangent), Exp, Log
(natural), Sgn, Sqr (square root),
Rnd (random number)
Flow Control
If condition Then
statements
Else
statements
End If
If x=0 Then
f=1
Else
f=sin(x)/x
End If
Flow Control
For counter=start To end
statements
Next
For i=1 To 100
sum=sum+i
Next
Flow Control
Do Until condition
statements
Loop
i=1
x=1
Do Until i=50
x=x*i
i=i+1
Loop
Flow Control
Do While condition
statements
Loop
i=1
x=1
Do While i<50
x=x*i
i=i+1
Loop
Practice
Write
My solution
Function sumofcubes(N)
ans = 0
For i = 1 To N
ans = ans + i ^ 3
Next
sumofcubes = ans
End Function
Another Solution
Function moresumofcubes(N)
ans = 0
i = 1
Do Until i = N + 1
ans = ans + i ^ 3
i = i + 1
Loop
moresumofcubes = ans
End Function
Creating a Subroutine
Subroutines
dont return
values...they carry out duties
Well look at an example
Example Sub
Sub writeit()
NumPoints = 21
XNot = 0
dX = 0.1
ActiveCell.Value = "X"
ActiveCell.Offset(0, 1).Value = Sin(X)"
x = XNot
For i = 1 To NumPoints
ActiveCell.Offset(i, 0).Value = x
ActiveCell.Offset(i, 1).Value = Sin(x)
x = x + dX
Next
End Sub
Macro Explanation
First