Please Note: This article is written for users of the following Microsoft Excel versions: 97, 2000, 2002, and 2003. If you are using a later version (Excel 2007 or later), this tip may not work for you. For a version of this tip written specifically for later versions of Excel, click here: Understanding Functions in Macros.

Understanding Functions in Macros

by Allen Wyatt
(last updated February 27, 2017)

You already know that you can use subroutines in your macros. VBA also allows you to define functions that can be used in your macros. The difference between functions and subroutines is that functions can return values, whereas subroutines cannot. Consider the following macro:

Sub Macro1()
    TooMany = TestFunc
    If TooMany Then MsgBox "Too many columns selected"
End Sub
Function TestFunc()
    TestFunc = False
    If Selection.Columns.Count > 10 Then
       TestFunc = True
    End If
End Function

The macro (Macro1) calls the TestFunc function. This function returns either the value False or True, depending on a test it performs. Macro1 then acts upon the value returned. Notice that the function name can appear on the right side of an equal sign. This makes functions very powerful and an important part of any program. Within the function the result is assigned to TestFunc, which is the name of the function itself; this is the value returned by the function.

As with subroutines, you can also pass parameters to your functions. This is illustrated in the following macro:

Sub Macro1()
    A = 12.3456
    MsgBox A & vbCrLf & RoundIt(A)
End Sub
Function RoundIt(X) As Integer
    RoundIt = Int(X + 0.5)
End Function

This simple macro (Macro1) defines a number, and then uses a message box to display it and the result of passing the number to the RoundIt function. The output is 12.3456 and 12. Notice that the parameter should be passed to the function within parentheses. Also notice that the function does not use the same variable name as it was passed. This is because VBA reassigns the value of X (what the function needs) so it matches the value of A (what the program is passing to the function). The important thing to remember in passing parameters to functions is that your program must pass the same number of parameters as the function expects, and the parameters must be of matching types and in the proper order.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (2259) applies to Microsoft Excel 97, 2000, 2002, and 2003. You can find a version of this tip for the ribbon interface of Excel (Excel 2007 and later) here: Understanding Functions in Macros.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He  is president of Sharon Parq Associates, a computer and publishing services company. ...

MORE FROM ALLEN

Replacing the Last Comma

When you need to perform certain editing tasks over and over again, you start to look for ways to make your work faster and ...

Discover More

Using Crop Marks with a PostScript Printer

Want to add crop marks to a printout? It's easy to do, provided you are using a PostScript printer.

Discover More

Counting Cells According to Case

Text placed in cells can either be lowercase, uppercase, or a mixture of the two. If you want to count the cells based upon ...

Discover More

Excel Smarts for Beginners! Featuring the friendly and trusted For Dummies style, this popular guide shows beginners how to get up and running with Excel while also helping more experienced users get comfortable with the newest features. Check out Excel 2013 For Dummies today!

MORE EXCELTIPS (MENU)

Deleting Worksheet Code in a Macro

When creating an application in VBA for others to use, you might want a way for your VBA code to modify or delete other ...

Discover More

Displaying the Print Dialog Box in a Macro

Want to print a document by using a macro? One way is to display the Print dialog box and allow the user to interact with it. ...

Discover More

Checking if a Workbook is Already Open

Knowing of a workbook is already open can be a prerequisite to your macro working correctly. Here's how to check it out.

Discover More
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments for this tip:

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] in your comment text. You’ll be prompted to upload your image when you submit the comment. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is 9 - 7?

There are currently no comments for this tip. (Be the first to leave your comment—just use the simple form above!)


This Site

Got a version of Excel that uses the menu interface (Excel 97, Excel 2000, Excel 2002, or Excel 2003)? This site is for you! If you use a later version of Excel, visit our ExcelTips site focusing on the ribbon interface.

Newest Tips
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.

Links and Sharing