67
McGraw-Hill/Irwin Copyright © 2013 by The McGraw-Hill Companies, Inc. All rights reserved. Extended Learning Module M Programming in Excel with VBA

Extended Learning Module M

Embed Size (px)

DESCRIPTION

Extended Learning Module M. Programming in Excel with VBA. INTRODUCTION. VBA, which stands for Visual Basic for Applications , is a programming language developed by Microsoft Excel, along with the other members of Microsoft Office, includes the VBA language. INTRODUCTION. - PowerPoint PPT Presentation

Citation preview

Page 1: Extended Learning Module M

McGraw-Hill/Irwin Copyright © 2013 by The McGraw-Hill Companies, Inc. All rights reserved.

Extended Learning Module M

Programming in Excel with VBA

Page 2: Extended Learning Module M

Mod M-2

INTRODUCTION

VBA, which stands for Visual Basic for Applications, is a programming language developed by Microsoft

Excel, along with the other members of Microsoft Office, includes the VBA language

Page 3: Extended Learning Module M

Mod M-3

INTRODUCTION

Excel VBA is a programming application that allows Visual Basic code to customize your Excel applications

Units of VBA code are often referred to as macros

Page 4: Extended Learning Module M

Mod M-4

INTRODUCTION

One advantage of Excel VBA is the macro recorder

The macro recorder is a software tool that will let you record a sequence of commands in Excel and save them as a macro

Page 5: Extended Learning Module M

Mod M-5

WHY VBA?

VBA is a programming language, but it also serves as a macro language

A macro language is a programming language that includes built-in commands that mimic the functionality available from menus and dialog boxes within an application

A macro is a set of actions recorded or written by a user

Page 6: Extended Learning Module M

Mod M-6

WHY VBA?

Create a VBA macro to format and print a month-end sales report

Execute the macro with a single command

Trigger Excel to automatically perform many time-consuming tasks

Page 7: Extended Learning Module M

Mod M-7

WHY VBA?

If you are able to perform an operation manually, you can use the macro recorder to capture that operation

You can use VBA to create your own worksheet functions

Page 8: Extended Learning Module M

Mod M-8

WHY VBA?

Common uses for VBA macros: Inserting text Automating a task Automating repetitive tasks Creating a custom command

Page 9: Extended Learning Module M

Mod M-9

WHY VBA?

Common uses for VBA macros: Creating a custom toolbar button Creating a custom menu command Creating a simplified front end Developing new worksheet

functions Creating complete, macro-driven

applications

Page 10: Extended Learning Module M

Mod M-10

VBA in a Nutshell

You perform actions in VBA by writing (or recording) code in a VBA macro

You view and edit VBA macros using the Visual Basic Editor (VBE)

Page 11: Extended Learning Module M

Mod M-11

VBA in a Nutshell

A VBA macro consists of Sub procedures

A Sub procedure is computer code that performs some action on or with objects

Page 12: Extended Learning Module M

Mod M-12

VBA in a Nutshell

Sub procedure example:Sub Demo()

Sum = 1 + 1MsgBox “The answer is

” & Sum End Sub

Page 13: Extended Learning Module M

Mod M-13

VBA in a Nutshell

A VBA macro can also have Function procedures

A Function procedure is a VBA macro that returns a single value

You can call it from another VBA macro or even use it as a function in a worksheet formula

Page 14: Extended Learning Module M

Mod M-14

VBA in a Nutshell

Function example:Function AddTwo(arg1,

arg2) AddTwo = arg1 + arg2

End Function

Page 15: Extended Learning Module M

Mod M-15

VBA in a Nutshell

VBA manipulates objects An object in VBA is an item

available for you to control in your code

Excel provides more than 100 objects that you can manipulate

Page 16: Extended Learning Module M

Mod M-16

VBA in a Nutshell

You can assign values to variables

A variable is a place to store a piece of information

You can use variables in your VBA macro to store such things as values, text, or property settings

Page 17: Extended Learning Module M

Mod M-17

VBA in a Nutshell

VBA FUNCTION EXAMPLEObject

Arranged in a hierarchy

Excel: Workbook: Worksheet

Application.Workbooks(“Book1.xls”).Worksheets(“Sheet1”)

Methods

Method is an action such as ClearContents

Worksheets(“Sheet1”).Range(“A1”).ClearContents

Page 18: Extended Learning Module M

Mod M-18

THE VISUAL BASIC EDITOR

The Visual Basic Editor (VBE) is a separate application where you write and edit your Visual Basic macros

You can't run the VBE separately; Excel must be running in order for the VBE to operate

Page 19: Extended Learning Module M

Mod M-19

THE VISUAL BASIC EDITOR

The quickest way to activate the VBE is to press Alt+F11 when Excel is active

To return to Excel, press Alt+F11 again Alt+F11 acts as a toggle between the

Excel application interface and the VBE You can also activate the VBE by using

the menus within Excel Choose Tools, then Macro, and then

choose Visual Basic Editor

Page 20: Extended Learning Module M

Mod M-20

The VBE Tools

Menu Bar Toolbar Project Explorer Window Code Window The Properties Window The Immediate Window

Page 21: Extended Learning Module M

Mod M-21

The VBE Tools

Page 22: Extended Learning Module M

Mod M-22

Working with the Project Explorer

When working in the VBE, each Excel workbook that's open is a project

A project is a collection of objects arranged as an outline

Expand a project by clicking the plus sign (+)

To contract a project click the minus sign (-)

Page 23: Extended Learning Module M

Mod M-23

Adding a New VBA Module

Follow these steps to add a new VBA module to a project:

1. Create a new workbook in Excel2. Press Alt+F11 to activate the VBE3. Select the project's name in the

Project Explorer window4. Choose Insert and then Module or

you can use the shortcut, by using the right-mouse click, choosing Insert, and then Module

Page 24: Extended Learning Module M

Mod M-24

Removing a VBA Module

To remove a VBA module from a project, follow these steps:

1. Select the module's name in the Project Explorer window

2. Choose File, and then Remove ModuleName

Page 25: Extended Learning Module M

Mod M-25

Creating a Module

In general, a VBA module can hold several types of code: Sub procedures - A set of programming

instructions that performs some action Function procedures - A set of

programming instructions that returns a single value

Declarations - One or more information statements that you provide to VBA

Page 26: Extended Learning Module M

Mod M-26

VBA Module Code

Before you can do anything meaningful, you must have some VBA code in the VBA module

You can get VBA code into a VBA macro in two ways:

1. Entering the code directly by typing it2. Using the Excel macro recorder to

record your actions and convert them to VBA code

Page 27: Extended Learning Module M

Mod M-27

Entering Code Directly

You can type code directly into the module

You can select, copy, cut, paste, and do other things to the text

When you are entering your code directly, you use the Tab key to indent some of the lines to make your code easier to read

Page 28: Extended Learning Module M

Mod M-28

Entering Code Directly

Page 29: Extended Learning Module M

Mod M-29

Entering Code Directly

Page 30: Extended Learning Module M

Mod M-30

Using the Macro Recorder1. Activate a worksheet in the workbook2. Choose Tools, then Macro, and then Record

New Macro3. Excel displays its Record Macro dialog box4. Click OK to accept the defaults5. Excel automatically inserts a new VBA

module into the project6. From this point on, Excel converts your

actions into VBA code - while recording, Excel displays the word Recording in the status bar

Page 31: Extended Learning Module M

Mod M-31

Using the Macro Recorder

7. Excel displays a miniature floating toolbar that con tains two toolbar buttons: Stop Recording and Relative Reference

8. Choose Tools, then Options9. Click the View tab10. Remove the check mark from the

Gridlines option11. Click OK to close the dialog box12. Click the Stop Recording button

Page 32: Extended Learning Module M

Mod M-32

Using the Macro Recorder

Relative Relative Reference Reference

ButtonButton

Stop Stop Recording Recording

ButtonButton

Page 33: Extended Learning Module M

Mod M-33

Using the Macro Recorder

Page 34: Extended Learning Module M

Mod M-34

Using the Macro Recorder

Try the macro:1. Activate a worksheet that has

gridlines displayed2. Choose Tools, then Macro, and then

choose Macros, or press Alt+F83. Select Macro14. Click the Run button5. Excel executes the macro, and the

gridlines disappear

Page 35: Extended Learning Module M

Mod M-35

Using the Macro Recorder

Execute the Execute the chosen macrochosen macro

Remove the Remove the chosen macrochosen macro

Page 36: Extended Learning Module M

Mod M-36

Using the Macro Recorder

Another way to execute a macro is to press its shortcut key

1. Choose Tools, then Macro, and then Macros2. Select the Macro1 Sub procedure name from

the list box3. Click the Options button4. Click the Shortcut Key option and enter a

letter in the box labeled Ctrl + 5. Click OK to close the Macro Options dialog

box

Page 37: Extended Learning Module M

Mod M-37

Using the Macro Recorder

Remove Remove gridlinesgridlines

Page 38: Extended Learning Module M

Mod M-38

VBA BUILDING BLOCKS

There are many ways to write a macro using Excel VBA Write or record macros using

modules or procedures Develop user-defined functions

Page 39: Extended Learning Module M

Mod M-39

Code Modules

All macros reside in code modules like the one on the right of the VBE window

There are two types of code modules

1. Standard modules2. Class modules

Page 40: Extended Learning Module M

Mod M-40

Procedures

In VBA, macros are referred to as procedures

There are two types of procedures

1. Sub procedures 2. Function procedures

The macro recorder can only produce Sub procedures

Page 41: Extended Learning Module M

Mod M-41

Sub Procedures

Sub procedures (sometimes referred to as subroutines) start with the keyword Sub followed by the name of the procedure and opening and closing parentheses

The end of a Sub procedure is marked by the keywords End Sub

Page 42: Extended Learning Module M

Mod M-42

Sub Procedures

Sub MonthNames()Range(“B1”).SelectActiveCell.FormulaR1C1 = “Jan”Range (“C1”).SelectActiveCell.FormulaR1C1 = “Feb”...

End Sub

Page 43: Extended Learning Module M

Mod M-43

Function Procedures

Excel has hundreds of built-in worksheet Function Procedures

Choose Insert, and then the Function command to see a list of those functions

If the function you need is not already in Excel, you can write your own user defined function (or UDF) using VBA

Page 44: Extended Learning Module M

Mod M-44

Function Procedures

A function procedure example:

Function CentigradeToFahrenheit(Centigrade)

CentigradeToFahrenheit = Centigrade *

9 /5 + 32End Function

Page 45: Extended Learning Module M

Mod M-45

ELEMENTS OF VBA PROGRAMMING

VBA uses many elements common to all programming languages, such as: Comments Variables Constants Data types

Page 46: Extended Learning Module M

Mod M-46

Comments A comment is the simplest type of VBA VBA ignores these statements Example:

Sub CommentsExample()‘ This procedure is a demonstrationx = 0 ‘ x represents zero ‘ The next line of code will display

the resultMsgBox x

End Sub

Page 47: Extended Learning Module M

Mod M-47

Variables and Constants

VBA's main purpose is to manipulate data

VBA stores the data in your computer's memory

Some data, such as worksheet ranges, reside in objects and other data are stored in variables or constants

Page 48: Extended Learning Module M

Mod M-48

Variables

Variable – name of a storage location Examples

x = 1 (assigns the value of 1 to the variable x)

UserName = “Amy Phillips” (UserName is a string variable that can hold text)

x = x + 1 (adds 1 to x and stores it in the variable x)

DateStarted = #12/20/2004# (DateStarted is a date variable)

Page 49: Extended Learning Module M

Mod M-49

Constants

A variable's value may (and usually does) change while your procedure is executing

A constant is a named element whose value doesn't change

Example:Const NumQuarters As Integer = 4

Const Rate = .0725Const Period = 12

Const ModName As String = “Budget Macros”

Page 50: Extended Learning Module M

Mod M-50

Data Types

Data types are the manner in which data types are stored in memory - for example, as integers, real numbers, or strings

Examples Boolean Integer Currency Date String

Page 51: Extended Learning Module M

Mod M-51

Strings

Excel and VBA can work with both numbers and text

Text is often referred to as a string There are two types of strings in VBA:

1. Fixed-length strings are declared with a specified number of characters (the maximum length is about 65,526 characters)

2. Variable-length strings theoretically can hold as many as 2 billion characters

Page 52: Extended Learning Module M

Mod M-52

Dates

To store dates, use the Date data type

If you do, you will be able to perform calculations with the dates

Page 53: Extended Learning Module M

Mod M-53

Assignment Statements

An assignment statement is a VBA statement that assigns the result of an expression to a variable or an object

Examples:x = 1x = x + 1x = (y * 2) / (z * 2) HouseCost = 375000 FileOpen = True

Range(“TheYear”).Value = 2005

Page 54: Extended Learning Module M

Mod M-54

Operators

The precedence order for operators in VBA is exactly the same as in Excel formulas

Exponentiation has the highest precedence

Multiplication and division come next

Then addition and subtraction

Page 55: Extended Learning Module M

Mod M-55

Operators

Arithmetic operators Add (+), subtract (-), multiply (*),

divide (/), exponentiate (^), string concatenate (&)

Logical operators Not, And, Or, XoR (exclusion), Eqv

(equivalence), Imp (implication)

Page 56: Extended Learning Module M

Mod M-56

DECISIONS, DECISIONS, DECISIONS

VBA is a structured language It offers standard structured

decision constructs such as: If-Then and Select Case structures For-Next, Do-Until, and Do-While

loops

Page 57: Extended Learning Module M

Mod M-57

The If-Then Structure

Executes one or more statements based on some condition

FormatIf condition Then statements [Else

statements]

ExamplesIf Quantity >= 75 Then Discount = 0.25

If Quantity > 10 Then Discount = 0.1 Else Discount = 0.0

Page 58: Extended Learning Module M

Mod M-58

The Select Case Structure

Useful for decisions involving three or more options

Often used for decisions that involve evaluating a number in a range (e.g., between 1 and 100, between 101 and 200, and so on)

See example on page M.21

Page 59: Extended Learning Module M

Mod M-59

Looping

The term looping refers to repeating a block of statements or code numerous times

There are several looping statements to choose from: The For-Next loop The Do-While loop The Do-Until loop

Page 60: Extended Learning Module M

Mod M-60

The For-Next Loop

The looping is controlled by a counter variable, which starts at one value and stops at another value

Example:Sub FillRange()

Dim Count As Integer For Count = 1 To 100 ActiveCell.Offset(Count - 1, 0) = Rnd Next Count

End Sub

Page 61: Extended Learning Module M

Mod M-61

Do-While Loop

A Do-While loop continues until a specified condition is met

Example:Sub DoWhileExample()

Do While ActiveCell.Value <> Empty ActiveCell.Value =

ActiveCell.Value * 2 ActiveCell.Offset(1, 0).Select

LoopEnd Sub

Page 62: Extended Learning Module M

Mod M-62

Do-Until Loop

In a Do-Until loop, the macro executes the loop until the condition is true

Example:Sub DoUntilExample()

Do Until IsEmpty (ActiveCell.Value) ActiveCell.Value = ActiveCell.Value

* 2 ActiveCell.Offset(l, 0).SelectLoop

End Sub

Page 63: Extended Learning Module M

Mod M-63

WRAP IT UP

Page 64: Extended Learning Module M

Mod M-64

WRAP IT UP

1. Open a new workbook2. Create a worksheet 3. Press Alt+F11 to activate the VBE4. Click the new workbook's name in

the Project Explorer window5. Choose Insert, then Module to

insert a VBA module into the project

Page 65: Extended Learning Module M

Mod M-65

WRAP IT UP

6. Type the following code into the Code window

Type this Type this codecode

Page 66: Extended Learning Module M

Mod M-66

WRAP IT UP

7. Return to the Excel spreadsheet, make cell C10 the active cell and type in the formula =InvoiceAmount(A10, B10)

8. Copy the formula to the remaining cells

Page 67: Extended Learning Module M

Mod M-67

WRAP IT UP