Title: Visual Basic
1Visual Basic
Objects / Properties / Methods
Attribute
2Visual Basic
Range (A3).select
Range is an object
(A3) is a modifier for the object
select is a method
Note that object separated from method by a .
3Visual Basic
Activesheet.name
Activesheet is an object name is a property
The result is the name of the active sheet
4Procedures
Sub procedures return no values except by
changes to parameters in the argument list
Function procedures return a value by assigning
it to the name of the function.
5Function Procedures
Function Grade (exam1,exam2,exam3) as String
Dim Sum as Single
Sum exam1exam2exam3
If Sum gt 95 then Grade A Elseif
Sum gt 80 Grade B Else Grade
C Endif
End Function
6For functions and sub procedures, there is a one
to one correspondence between the arguments in
the call to the function and the argument list of
the function
The call
Grade( 90, C40, C60 )
The definition
Function Grade (exam1,exam2,exam3) as String
7Sub Procedures
Public Sub ColorList() ' Lists all the available
colors in the current pallette ' Number is listed
in column 2, color sample in column 3 ' List
starts in row 5 Dim I As Integer Dim J As
Integer Dim K As Integer J 5 I 2 For K 1 To
56 Cells(J, I).Value K Cells(J, I
1).Interior.ColorIndex K J J 1 Next
K End Sub
Note that ColorList is never assigned a value!
8Review of some Excel Basics
Cell references of two types A1 Columns
are alphabetic, rows are numeric R1C1 R
number Column number
B2 and R2C2 refer to the same cell
Can be set by the Tools / Options menus (Note
that the two methods are transposed A1 column
first, then row R1C1 row first, then column
)
9Formulae in Excel (R1C1 style)
R1C1 is an absolute address it does not change
under copy / paste R1C1 is a relative address
it does change under copy /paste And can use
mixed mode R1C1 R1 is absolute, C1 is
relative
10In VBA, can use either or both A1 and R1C1
styles A1 style tends to be absolute A1 style
used with the Range object Range(A4) Can
refer to individual cells with the Cells
object, which uses an R1C1 style Cells(4,1)
11In Excel, cells ranges can be named Insert /
name menu These names can be used in
Formulae VBA
12VBA Variable Types
String A sequence of bytes
containing characters Integer 2 byte
integer Long 4 byte integer Single
4 byte real number Double
8 byte real number Variant Can hold anything
(but expensive to use) Object A class of data
types used by Excel/VBA
13Characters Stings
For Excel, anything that is not a number or a
formula is a string. If want a set of digits as
a string, need to enclose in quote or quotation
marks.
For VBA, need to define variable that will hold
strings as string data types
14Visual Basic
Example -- simple Sub to name the active
worksheet
Sub NameIt() Dim newname as String newname
InputBox(Enter a name for the worksheet) ActiveS
heet.Namenewname End Sub
15Object data type
Many of the objects in Excel have their own data
type Dim r as Range Dim q as Worksheet Dim z
as Chart About the only one we will use is the
Range data type.
16Option Explicit
Forces you to Dim all variables Helps prevent
typos Can set this as the default through the
Tools/ Options menu. (Require variable
declaration check box)
17(No Transcript)
18Visual Basic
All objects have properties Most objects have
methods Will work with only a few of the many
objects, methods and properties To get a list of
objects and properties, invoke the Object Browser
(F2)
19Program module (Sub or Function) is made up of a
series of steps to accomplish a task. Five major
categories of steps
A 5
Assignment statements
Conditional statements
If ( A gt 5) then .
Calls to other modules
A sqrt (12)
For I 1 to 6 Next i
Iteration Statements
Input /Output operations (Which are really calls
to other modules)
Read 5, A
20Expression evaluation inVBA Operators in
priority order Left to right
Operator Priority List ( ) - (unary
minus) / -
Comparison Operators (gt, lt )
Logical Operators (NOT, AND, OR)
21Test 2 3 2 gt 5 AND (3-7)2 gt 6
(3-7) -4 32 9 -42 -8 92 11 11 gt
5 True -8 gt 6 False True AND False False
Thus, Test has the value False
22Conditional Expressions If / then /
else end if Select case . End Case
23If (expression) then
One or more expressions
Else
One or more expressions
End If
If (expression ) then (expression)
Note no End If statement for this type of If
/then expression
24Select Case Statement
Like a complex If / Then / ElseIf / EndIf
Select Case testexpression Case
expressionlist-n statements-n ... Case
Else elsestatements End Select
25Select Case Statement
Testexpression can be any that evaluates to a
numeric value or a string
Expressionlist is compared to the testexpression
to determine if the following statements should
be executed. See Help for all the allowable
forms
Statements are executed up to the next Case
statement or the End Select statement
26A simple example
Case statements to determine a letter grade from
a numeric grade. Assume the numeric grade is in
the variable grade
27Select Case grade Case Is gt90
ltrgradeA Case Is gt 85 ltrgrade
BA Case Is gt 70 ltrgrade C Case
Else ltrgradeE End Select
Note Goes to first Case that testexpression
satisfies. Is implicitly uses grade in
the comparison
28Generally speaking, anything you can do with a
Select Case block, you can do with a set of If /
Then / Else If / End If statements
29Iteration Statements
Used to execute a number of statements repeatedly
Two major types --- For / Next Do / Loop
30For counter to upperlimt step size Statements Ne
xt counter
For Each cell In Selection Statements cell.valu
e expression Next cell
31Basic Do Loop Structure
Do statements Loop
But we need a mechanism to stop the loop!
32Do while expression_is_true Statements Loop
Do Statements Loop while expression_is_true
33Do Until expression_is_true Statements Loop
Do Statements Loop Until expression_is_true
34Do...Loop Statement Example This example shows
how Do...Loop statements can be used. The inner
Do...Loop statement loops 10 times, sets the
value of the flag to False, and exits prematurely
using the Exit Do statement The outer loop exits
immediately upon checking the value of the
flag. Dim Check, Counter Check True Counter
0 ' Initialize variables. Do ' Outer loop.
Do While Counter lt 20 ' Inner loop. Counter
Counter 1 ' Increment Counter. If Counter
10 Then ' If condition is True. Check
False ' Set value of flag to False. Exit Do
' Exit inner loop. End If Loop Loop Until
Check False ' Exit outer loop immediately
35To manipulate a cells value, use the value
property of the cell object
Range(A4).value 20 Temp Range(A4).value
or
Cells(4,5).value 20 Temp Cells(4,5).value
36Build a simple module to set a 5 x 5 array of
cells to some value
In VBA IDE Insert module Insert procedure /
sub Initcells
Dim I as integer Dim J as integer For I 1 to
5 For J 1 to 5 Cells(I,J) IJ Next J Next I
Return to Excel and run macro Initcells
37Two useful VBA functions to interact with use
InputBox displays a prompt and awaits a reply
Str1 InputBox(prompt)
When invoked, displays the prompt and gives you a
box to enter a reply, which is placed in Str1
Dim str1 as String str1 InputBox(Please enter
your name)
38MsgBox displays a message and buttons to press.
The function value returned is the code for the
button
J MsgBox(prompt,buttoncodes, box name)
Look at Help for the button code values J is
the integer value of the button code the user
presses
CodeMsgBox(Are you OK,vbOKOnly,My Temp)
39Write a simple sub (called Heater) that accepts a
temperature as an argument and returns a string
to indicate what to do with the heater. Also
have MsgBox display a message to the use if the
heater status is changed. The logic for the
heater control is as follows If the temperature
is less than 65, Turn heater on If the
temperature is greater than75, Turn heater
off Otherwise, Leave heater alone Function
Heater (Temp) As string Code End function