Académique Documents
Professionnel Documents
Culture Documents
Outline
Excel Basic Elements
Using Macros
Excel VBA Basics
Excel VBA Advanced
Excel Basic Elements
Column - characters
uniquely designate
each column.
Each Row is
designated by
integer number
Cell intersection of
row and column.
In the example the
ID of the cell: B4
Excel Basic Data Types
Label anything that is just a text
My daughter is 3 years old!
Constant any type of number
50%, 3.5, 775$, 10, -7.8
Formula any math equation, always
starts with an equal sign =
=5+3, =45*7-3
Excel Spreadsheet Example
Using Formulas in Excel
Assignment:
Suppose, we have a class of four students
and we need to calculate an average of the
three assignments they had for each one of
them. Given the following spreadsheet:
Solution I
We have inserted
absolute constants
and invoked
AVERAGE excel
function
After update of cell B2
Can you see
anything wrong?
Solution II Using Cell
References
Solution II Using Cell
References
Now lets add
a constant
factor! $A$8
Now lets continue the
calculations - using copy
Select cell E2 and click
<Ctrl> + C
Starting from E3 and till
E5 drag the mouse and
select the needed group
of cells
Press <Ctrl> + P
That is all!
Solution II using Excel
Graphical User Interface
2. Click this
button
1. Select a
cell to be
updated
Solution II using Excel
Graphical User Interface
3. In the opened
dialogue select the
needed function
Solution II using Excel
Graphical User Interface
4. Go with
mouse to the
first argument
(here Number1)
5.Then with
mouse select the
needed cells
6. Finally
click OK
See how we refer
to a range!
Finally,
Using If Expression in Excel
=If(A2>1,Yes,No)
If it is true that the value in the cell A2
is greater then 1, then the value of
current cell is Yes
Otherwise (else), the value is No
Using Sin/Cos/Tan
Expression in Excel
Sin, Cos, Tan formats:
for degrees formula = sin (angle *
pi()/180), the argument angle is in
degrees
for radians formula = sin (angle), the
argument angle is in radians
Formatting Cells
Formatting Cells cont.
Adding Graphs/Charts
Outline
Excel Basic Elements
Using Macros
Excel VBA Basics
Excel VBA Advanced
Using Macros
Now lets create a simple macro that
formats a single cell
Changes its background
Changes its font
Recording a new Macro
Recording a new Macro
cont.
Recording the new Macro
cont.
Working with
Excel while
recording the
macro
Finishing the Macro
Running the Macro
Running the Macro cont.
The Output!
Looking inside the VB code of
our Macro
What does the row
mean???
Guess what does this Macro
do? What is different now?
Outline
Excel Basic Elements
Using Macros
Excel VBA Basics
Excel VBA Advanced
VB example Hello World!
Running the Example
The Output
Creating User From
Using Toolbox
This is a label
This is a button
Using the Toolbox
select a GUI
element and by
mouse-click place it
on the frame
Adding Code to the Button
In the open
Window fill-in
the function
The name of the method was automatically generated
CommandButton1 is the name of the button object
Click type of the event of the object
The method will be invoked whenever user clicks on the CommandButton1
button
Do you
remember the
code?
Running the code
The Output!!
Using Combo-Box
Add Source of
range for the
combo-box
Select
The Combo-
Box
Add Code to the Combo Box
The output
after user
makes combo
box
selection
Outline
Excel Basic Elements
Using Macros
Excel VBA Basics
Excel VBA Advanced
Modules & Procedures
Module collection of logically related
procedures grouped together
Procedure a group of ordered
statements enclosed by Sub and End
Sub
Function the same as a procedure, but
also returns some value and is closed
between Function and End Function
key words
Procedure & Function
Examples
Sub ShowTime)(
Range("C1") = Now)(
End Sub
Function sumNo(x, y)
sumNo = x + y
End Function
The procedure places
the current time
inside cell C1
The function returns sum
of two input numbers,
whose values are in the
parameter variables x &
y
Calling procedures vs. calling
functions
Sub z(a)
MsgBox a
End Sub
Sub x()
Call z("ABC")
End Sub
Sub y()
z "ABC
End Sub
Sub ShowSum()
MsgBox _
Module1.sumNo(3,5)
End Sub
Function sumNo(x, y)
sumNo = x + y
End Function
If there are few
sumNo functions,
the full name of
the function is
needed
Passing Arguments by Value
or by Reference
Passing arguments by reference
Is the VBA default
Means, if any changes happened to the argument
variables, they will be preserved after the
function/procedure finishes
Passing arguments by value
Is possible in VBA (by explicit definition)
Means, the pre-calling state of the argument
variables will be preserved after the
procedure/function finishes
Arguments by Ref/by Val.
Examples
Sub TestPassing1()
Dim y As Integer
y = 50
AddNo1 y
MsgBox y
AddNo2 y
MsgBox y
End Sub
Sub AddNo1(ByRef x As Integer)
x = x + 10
End Sub
Sub AddNo2(x As Integer)
x = x + 10
End Sub
public Sub TestPassing2()
Dim y As Integer
y = 50
AddNo3 y
MsgBox y
End Sub
private Sub AddNo3(ByVal x _
As Integer)
x = x + 10
End Sub
Functions/Procedure Scope
Use public to allow any module to call
the function/procedure
Use private to make limited access to
the function/procedure (only from the
owning module)
VBA Variables
A variable is used to store temporary
information within a Procedure, Module
A variable name
Must start with letter and cant contain spaces and
special characters (such as &, %, \)
Cant be any excel keyword (if, while)
Cant have identical name to any existing class
(Wroksheet, Workbook)
VBA Data Type
Byte positive integer numbers (0:255)
Integer integers (-32,768 : 32,767)
Long 4-byte integer
Currency for fixed-point calculations
Single 2-byte floating-point numbers
VBA Data Type
Double double-precision floating-point
numbers
Date used to store dates and times as
real numbers.
String contains a sequence of
characters
The Variables Advantage by
Example
Sub NoVariable()
Range("A1").Value = _
Range("B2").Value
Range("A2").Value = _
Range("B2").Value * 2
Range("A3").Value = _
Range("B2").Value * 4
Range("B2").Value = _
Range("B2").Value * 5
End Sub
Sub WithVariable() Dim _
iValue as Integer
iValue = _
Range("B2").Value
Range("A1").Value = _
iValue
Range("A2").Value = _
iValue * 2
Range("A3").Value = _
iValue * 4
Range("B2").Value = _
iValue * 5
End Sub
In VB the end of
statement is in the end of
line.
To write the same
statement in few lines
use _ at the end of line!
Using Variables
Declaring Variables
Format: Dim varibaleName AS dataType
Examples:
Dim myText As String
Dim myNum As Integer
Dim myObj As Range
The default value of
any numeric variable is zero
any string variable (empty string)
an Object variable is nothing (still the declaration will store
space for the object!!!)
Variant Data Type
In VB you dont have to declare variable before its
usage
Then, VB will by itself declare such variable as Variant
You can also declare variable as Variant
Dim myVar as Variant
Variant means that the variable may contain any
data type
The price is very high!!! any time VB access such
variable, it will spend time on deciding what is its
current type!
Variables Assignment
To assign a value to a Numeric or String
type Variable, you simply use your
Variable name, followed by the equals
sign (=) and then the String or Numeric
To assign an Object to an Object type
variable you must use the key word "Set"
Variables Assignment cont.
Sub ParseValue )(
Dim sWord as String
Dim iNumber as Integer
Dim rCell as Range
Set rCell = Range("A1")
sWord = Range("A1").Text
iNumber = Range("A1").Value
End Sub
VBA Variables Scope &
Lifecycle
The scope & lifecycle of a variable defines the code where the variable
can be accessed and time when the stored data is kept inside the
variable
Procedure-Level
Variables defined inside procedures
Can be accessed only inside the procedure and keep their data until the
End statement of the procedure
Module-Level
Defined in the top of a Module
Any procedure inside the Module can access the variable
The variable retains the values unless the Workbook closes
Project-Level, Workbook Level, or Public Module-Level
Defined as Public in the top of a Module
Can be accesses by any procedure in any module
The variable retains the values unless the Workbook closes
VBA Variables Scope &
Lifecycle cont.
Sub scopeExample()
Dim x as Integer
x = 5
End Sub
Dim y as Integer
all the module procedures are here
Public z as Integer
all the module procedures are here
Procedure level variables
Module level variables
Project level variables
Basic Excel Classes
Workbook: the class represents an
Excel file
Worksheet: represents a single
worksheet
Sheet: represents a single worksheet or
chartsheet
Cell: represents a single cell
VBA Entities by Example
A current
Worksheet
A Range
E2:E5
A Cell
A Current
Workbook
Excel Containers
Workbooks: a collection of objects of
class Workbook
Worksheets: a collection of objects of
class Worksheet
Sheets: a collection of Sheet objects
Range: a range of objects of class Cell
Referencing the Objects -
Examples
Sub Test1()
Worksheets("Sheet1").Range("A10", "B12") =
"Hello
Worksheets(1).Range("A13,B14") = "World!"
End Sub
This will take the
whole square
between the two
cells
The range of two
cells
Two equal ways to
refer Sheet1
The Output
Which Workbook was
Used?
What does this procedure do?
Sub ShowWorkSheets)(
Dim mySheet As Worksheet
For Each mySheet In Worksheets
MsgBox mySheet.Name
Next mySheet
End Sub
The Output!
How many times
the user will click
on the button?
Referencing Cells
Cells indexing format:
Cells(row, column), where both row and column
are given as integers (starting from 1)
Cells(index) see the next slide
Following expressions are equivalent and
refer to the cell A1 in the currently active
sheet:
ActiveSheet.Range.Cells(1,1)
Range.Cells(1,1)
Cells(1,1)
Referencing Cells with Offset
Range(B1:F5).Cells(12) = XYZ
See how we
calculate cell 12
In the given
range!
Referencing Cells with Offset
cont.
ActiveCell.Offset(4, 5) = 1
This is the
currently active
cell
The assignment
result
Few methods/properties of
Excel Classes
Workbooks.Close closes the active
workbook
Workbooks.Count returns the number of
currently open workbooks
Range(A1) is the same as
Range(A1).Value
Worksheets(1).Column(A:B).AutoFit
Worksheets(1).Range(A1:A10).Sort_
Workbooks.Open fileName:=Hello.xls,
password:=kukuriku
Defining and Assigning a new
Object of type Range
Dim myRange as Range
Set myRange = Range(A1:A10)
VBA Arrays
Suppose, we want to keep a collection
of all the books that we loan,
Or we want to keep lists of tasks for all
the days of the week
The nave solution is to keep a lot of
variables
Another solution is to create array keeping
the whole collection together
Declaring object of type Array
Dim LoanBooks(3)
LoanBooks(1) = Winnie The Pooh
LoanBooks(2) = Adventures of Huckleberry Finn
LoanBook(3) = Frankenstein
The array declaration.
The size must be defined
here!
Multidimensional Arrays
Dim WeekTasks(7,2)
WeekTasks(1,1) = To buy milk
WeekTasks(7,1) = To dance