Top Banner
OUTLINE Excel – Basic Elements Using Macros Excel VBA Basics Excel VBA Advanced
40

Excel – Basic Elements Using Macros Excel VBA Basics Excel VBA Advanced.

Dec 25, 2015

Download

Documents

Alison Williams
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

OUTLINE

Excel – Basic Elements Using Macros Excel VBA Basics Excel VBA Advanced

Page 2: 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

Page 3: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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

Page 4: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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

Page 5: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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

Page 6: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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

Page 7: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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)

Page 8: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

VBA VARIABLES

A variable is used to store temporary information within a Procedure, Module…

A variable name Must start with letter and can’t contain spaces and

special characters (such as “&”, “%”, “\”) Can’t be any excel keyword (“if”, “while”…) Can’t have identical name to any existing class

(“Wroksheet”, “Workbook”…)

Page 9: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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

Page 10: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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

Page 11: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

THE VARIABLES ADVANTAGE BY EXAMPLE

Sub NoVariable()Range("A1").Value = _

Range("B2").Value Range("A2").Value = _

Range("B2").Value * 2Range("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!

Page 12: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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!!!)

Page 13: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

VARIANT “DATA TYPE”

In VB you don’t 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!

Page 14: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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"

Page 15: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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

Page 16: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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

Page 17: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

VBA VARIABLES SCOPE & LIFECYCLE – CONT.

Sub scopeExample()Dim x as Integerx = 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

Page 18: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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

Page 19: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

VBA ENTITIES BY EXAMPLE

A current Worksheet

A Range C4:D7A Cell

A CurrentWorkbook

Page 20: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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

Page 21: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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

Page 22: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

THE OUTPUTWhich Workbook

wasUsed?

Page 23: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

WHAT DOES THIS PROCEDURE DO?

Sub ShowWorkSheets()    Dim mySheet As Worksheet        For Each mySheet In Worksheets        MsgBox mySheet.Name    Next mySheet

End Sub

Page 24: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

THE OUTPUT!How many times

the user will click on the

button?

Page 25: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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)

Page 26: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

REFERENCING CELLS WITH OFFSET

Range(“B1:F5”).Cells(12) = “XYZ”

See how we calculate cell 12In the given range!

Page 27: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

REFERENCING CELLS WITH OFFSET – CONT.

ActiveCell.Offset(4, 5) = 1

This is the currently active cell

The assignment

result

Page 28: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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”

Page 29: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

DEFINING AND ASSIGNING A NEW OBJECT OF TYPE RANGE

Dim myRange as RangeSet myRange = Range(“A1:A10”)

Page 30: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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 naïve solution is to keep a lot of

variables Another solution is to create array keeping

the whole collection together

Page 31: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

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!

Page 32: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

MULTIDIMENSIONAL ARRAYS

Dim WeekTasks(7,2)

WeekTasks(1,1) = “To buy milk”WeekTasks(7,1) = “To dance”…

MsgBox WeekTasks(1,1) & ” ” & WeekTasks(1,2) _ & vbCrLf & WeekTasks(2,1)…

What will the code print?

Page 33: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

RESIZING THE ARRAYS

There are two ways to resize the existing array: ReDim LoanBooks(7) – will erase the old

values ReDim Preserve LoanBooks(7) – will

preserve values in indexes 1-3

Page 34: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

UPPER & LOWER INDEX BOUNDS OF AN ARRAY

Dim A(1 To 100, 0 To 3, -3 To 4) UBound(A, 1) – will return “100” UBound(A, 2) – will return “3” UBound(A, 3) – will return “4” LBound(A, 1) – will return “1” LBound(A, 2) – will return “0” LBound(A, 3) – will return “-3”

Write code calculating the size of each one of the sub-arrays

Page 35: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

VBA CONTROL STRUCTURES - IF

If Age >= 18 Then Status = "Adult" End If If Age >=18

Then Status = “Adult”Vote = “Yes”

ElseStatus = “Child”Vote = “No”

End If

Page 36: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

VBA CONTROL STRUCTURES - IF

If Age >= 18 Then MsgBox "You can vote"ElseIf Age >=22 and Age < 62

Then MsgBox “You can drive”End If

Page 37: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

VBA CONTROL STRUCTURES – SELECT Select Case Grade        Case Is >= 90            LetterGrade = "A"        Case Is >= 80            LetterGrade = "B"        Case Is >= 70            LetterGrade = "C"        Case Is >= 60            LetterGrade = "D"        Case Else            LetterGrade = “E"End Select

Page 38: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

VBA CONTROL STRUCTURES – LOOPS

For i = 10 to 1 Step -2        Cells(i, 1) = “AB”

Next i

i = 1Do While i =< 10

 Cells(i, 1) = i i = i + 1

Loop

i = 1    Do         Cells(i, 1) = i        i  = i + 1    Loop While i < 11

Page 39: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.

TEST YOURSELF! WHAT DOES THE PROCEDURE DO?

Sub CellsExample()   For i = 1 To 5        For j = 1 To 5            Cells(i, j) = "Row " & i & "   Col " & j        Next j   Next iEnd Sub

Page 40: Excel – Basic Elements  Using Macros  Excel VBA Basics  Excel VBA Advanced.