Suppose you’re creating a complex macro and you discover that, among other things, you
want the macro to perform a task you’ve already recorded under a different name. Or suppose
you discover that a task you’ve recorded as part of a macro is something you’d like to use
by itself.
In our MyPolyAddress macro, for example, it might be nice if we could quickly
and easily apply the font formats of my name to other items in a worksheet.
With VBA, you can conveniently divide large macros into a series of smaller macros, and you
can easily string together a series of small macros to create one large macro.
A macro procedure
that is used by another macro is called a subroutine.
Macro subroutines can simplify your
macros because you have to write only one set of instructions rather than repeat the instructions
over and over.
To use a macro subroutine in another macro, you call the subroutine by
using its name in the other macro.
To demonstrate, let’s split the MyPolyAddressRel macro into two parts by following
these steps:
With Selection.Font
.Name = "Arial"
.FontStyle = "Bold Italic"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
ActiveCell.FormulaR1C1 = "Prof. Ming Leung"Press Enter to insert a new line.
Sub MyPolyAddressRel()
MyPolyFont
ActiveCell.FormulaR1C1 = "Prof. Ming Leung"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "Polytechnic University"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "Six Metrotech Center"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "Brooklyn, NY 11201"
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
Sub MyPolyFont()
With Selection.Font
.Name = "Arial"
.FontStyle = "Bold Italic"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
End Sub
When you activate the MyPolyAddressRel macro by pressing Ctrl+A, Excel runs the first
statement in the macro. Since that first statement calls the MyPolyFont macro, it switches
to the first line of MyPolyFont. When Excel reaches the End Sub statement at the end of
MyPolyFont, it returns to the statement in MyPolyAddress immediately after the one
that called MyPolyFont and continues until it reaches the End Sub statement at the end of
MyPolyAddress.