|

Macros offer a powerful and flexible way to extend the features
of MS Excel. They allow the automation of formatting, charting and
other often-used spreadsheet tasks. Perhaps more significantly,
macros also enable the user to seamlessly integrate an Excel workbook
with another application, such as WinWedge. This article provides
an overview of creating, editing, saving and invoking macros.
At its simplest, a macro is just a recording of the
keystrokes and mouse actions involved in performing a particular task. At any time after
the macro is created, the task can be automatically performed by invoking the macro, which
essentially plays back the recording. More advanced macros can display custom forms (with
command buttons, text boxes, drop-down lists, etc.) and interact with other applications;
these macros typically involve the writing and editing of Visual Basic for Applications
(VBA) program code.
The examples in this article were created with Excel 2000, but
may be easily adapted to prior (or later) versions of Excel.
Creating Macros
A Simple Macro
If you frequently need to format individual cells in a particular
way (for example, currency style in red Arial bold 12-point font),
a simple recorded macro will do the trick. Use the following steps
to create it:
- Select Tools, Macro, Record New Macro to display the
Record Macro dialog box.
- In the Record Macro dialog box, type a descriptive Macro
name (such as "RedCurrency"). By default, the macro
will be stored and available only in the current workbook; if
appropriate, open the Store macro in drop-down list and
select either New Workbook (to store and use the macro only in
a new empty workbook) or Personal Macro Workbook (to make the
macro available in all workbooks). If desired, edit the
text in Description. When done, click the OK button
to begin recording.
- The word "Recording" will appear on the status bar
at the bottom of the Excel window to remind you that all keystrokes
and mouse actions are now being recorded. Depending on how your
system is configured, a Stop Recording toolbar may also
appear in the window. If you make a mistake, simply correct it
as you normally would and continue; both the mistake and its correction
will become part of the macro, and may be edited out later if
desired.
- Perform the actions necessary to complete the task. For this
example, the actions are:
- Select Format, Cells to display the Format Cells dialog
box, click the Number tab, select Currency in the Category
list, and click the OK button; as an alternative, you
may simply click the $ button on the Formatting toolbar.
- Select Format, Cells to display the Format Cells dialog
box, click the Font tab and then:
- open the Color drop-down list and select the desired
color;
- select Arial from the Font list;
- select Bold from the Font style list;
- select 12 from the Size list; and
- click the OK button.
- If the Stop Recording toolbar is visible, click its Stop
Recording button; if the toolbar is not visible, select Tools,
Macro, Stop Recording.
A VBA Macro
Some macros, especially those designed to interact with another
application, must be created using the Visual Basic Editor. For
example, the GetSWData macro shown below increments a row pointer,
retrieves a single field of data from the Software Wedge, and places
it in column A of the indicated row in Sheet1 of the current workbook.
Text following an apostrophe is a comment, and does not affect the
operation of the macro.
Sub GetSWData()
'preserve current row pointer value between
macro calls
Static RowPointer As Long
'increment row pointer (initialized to 0 on
first call)
RowPointer = RowPointer + 1
'establish DDE link to WinWedge on Com1
ChannelNum = DDEInitiate("WinWedge", "Com1")
'retrieve Field(1) from WinWedge into variant
array F1
F1 = DDERequest(ChannelNum, "Field(1)")
'convert variant to string
WedgeData$ = F1(1)
'write data to first column in current row
Sheets("Sheet1").Cells(RowPointer, 1).Value = WedgeData$
'close the DDE link
DDETerminate ChannelNum
End Sub
To create this macro, do the following:
- Select Tools, Macro, Macros to display the Macro
dialog box.
- Type in the name of the macro, and click the Create button.
- A code window will open in the Visual Basic Editor, with the
first and last lines of the macro already typed in for you.
- Type in the balance of the macro and close the window captioned
Microsoft Visual Basic.
Editing Macros
Regardless of whether a macro was created by recording or through
the Visual Basic Editor, it is stored as VBA code. For example,
the simple recorded macro described above might be stored as follows:
Sub RedCurrency()
'
' Macro2 Macro
' Macro recorded 11/9/1999 by Tal Technologies, Inc.
'
Selection.Style = "Currency"
With Selection.Font
.Name = "Arial"
.FontStyle = "Bold"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
End Sub
If you need to correct or modify a macro, you always use the Visual
Basic Editor. The procedure is:
- Select Tools, Macro, Macros to display the Macro
dialog box.
- Select the name of the macro you wish to edit, and click the
Edit button.
- A Visual Basic Editor window will open with macro's code in
it.
- Make the desired corrections or modifications and close the
Window captioned Microsoft Visual Basic.
Saving Macros
Macros are saved as part of the workbook in which they were created.
If you attempt to exit from Excel without saving any macros you
created or modified, you will see a warning dialog box giving you
the option to save the affected workbook. You can avoid seeing this
warning by saving your work in either Excel or the Visual Basic
Editor.
Invoking Macros
Tools Menu
The standard way to invoke a macro is via the Tools menu, as follows:
- Select Tool, Macro, Macros to display the Macro
dialog box.
- Select the name of the macro you wish to invoke, and click the
Run button.
- The macro will run immediately. For example, if you invoked
the RedCurrency macro above, the formatting of the current cell
would immediately change to red Arial bold 12-point font.
Worksheet Button
A more convenient way to invoke a macro is via a command button
on the worksheet itself. While you can install a command button
from either the Controls Toolbox toolbar or the Forms toolbar, you
should generally use only the Forms toolbar. When a macro is invoked
from a command button installed from the Controls Toolbox toolbar,
the button itself retains the focus, and this may interfere with
the correct operation of the macro. When a macro is invoked from
a command button installed from the Forms toolbar, the button does
not retain the focus and the macro executes normally. To create
a command button on a worksheet, do the following:
- Select View, Toolbars, Forms to display the Forms
toolbar.
- Click the Create Button button on the Forms toolbar.

- Drag the mouse pointer on the worksheet to indicate the location
and shape of the command button you wish to create. When you release
the mouse button, the command button will appear, along with an
Assign Macro dialog box.
- In the Assign Macro dialog box, select the name of the
macro to be invoked by the button, and then click the OK
button.
- Type a descriptive name to appear on the button face.
- Click in the worksheet, but not on the command button,
to de-select the command button.
- Click the "X" button at the upper right corner of
the Forms toolbar to remove it from the screen.
The macro will now execute immediately whenever the command button
is clicked.
Custom Toolbar Button
You can also use a custom button on any of the toolbars to invoke
a macro. To create a custom button on a toolbar, do the following:
- If the toolbar you wish to add the custom button to is not visible,
select View, Toolbars and then click the name of that toolbar
to display it.
- Select View, Toolbars, Customize to display the Customize
dialog box.
- Click the Commands tab.
- In the Categories list select Macros.
- Drag the Custom Button icon from the Commands list and
drop it at the desired position on the toolbar. During the drag,
a small square box will appear just below and to the right of
the mouse pointer. The box will contain a "+" when the
mouse pointer is at a location where the custom button may dropped;
otherwise it will contain an "x".
- Right-click the new custom button on the toolbar, and select
Assign Macro to display the Assign Macro dialog
box.
- In the Assign Macro dialog box, select the name of the
macro to be invoked when the custom button is clicked, and click
the OK button.
- If you want to change the button image, right-click the new
custom button on the toolbar, and select Change Button Image
and then click the image you want to use.
- Click the Close button in the Customize dialog
box to close the dialog box.
The macro will now execute immediately whenever the custom toolbar
button is clicked.
Shortcut Key
You can also invoke a macro by simply pressing its assigned shortcut
key (sometimes known as a "hot key"). If you are recording
a new macro, you can assign a shortcut key to it while the Record
Macro dialog box is displayed. Simply click the Shortcut
key text box and either type a letter key (to produce a Ctrl
shortcut key) or type a letter key while holding down the Shift
key (to produce a Ctrl-Shift shortcut key).
After a macro has been created, you can assign or change its shortcut
key by doing the following:
- Select Tools, Macro, Macros to display the Macro
dialog box
- Select the name of the macro and click the Options button
to display the Macro Options dialog box.
- Enter the shortcut key as indicated above, and click the OK
button.
- Close the Macro dialog box by clicking either the close
("X") button on the title bar or the Cancel button.
The macro will now execute immediately whenever the shortcut key
is pressed. Remember to hold down the Ctrl key (for Ctrl shortcut
keys) or both the Ctrl and Shift keys (for Ctrl-Shift shortcut keys)
while you press the letter key.
|