home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 September
/
Simtel20_Sept92.cdr
/
msdos
/
lotus123
/
lotushlp.arc
/
LOTUS4.DOC
< prev
next >
Wrap
Text File
|
1985-05-31
|
8KB
|
199 lines
1-2-3 Macro Tips
Looping Macros
This short article outlines several practical uses for macros
which loop, or repeat tasks, until the user chooses to stop
performing an operation.
Simplifying Use of Numeric Keypad
This macro allows you to use the numeric keypad at the right side
of the keyboard. Of course, you can always use the keypad by
pressing the [Num Lock] key, or by holding down the [Shift] key
while typing the numbers on the pad. Unfortunately, the cursor
motion keys are on the same pad, and you usually move the cell
pointer after typing each number.
This macro takes care of moving the cell pointer, so it is named
\M, for Move. While using it, you should leave the [Num Lock] on.
The NUM indicator in the lower right-hand corner of the screen is
displayed when the numeric keypad is set for the input of numbers
only.
The Move Macro takes advantage of the special macro instruction
{?}. This stops execution of the macro and gives control of 1-2-3
back to you. The macro resumes when you press [Enter]. 1-2-3 lets
you know that you are still in a macro by displaying the CMD
indicator next to the Mode indicator in the upper right-hand
corner of the screen.
The Move Macro waits until you make an entry, and moves the cell
pointer when you press [Enter]. For this example the macro will
move the cell pointer down, but it could be written to move it
laterally or diagonally. Without looping, it consists of just two
instructions:
Range Name Command Comments
\M {?} Wait until [Enter].
{down} Move the cell pointer down.
When you press Alt-M, the CMD indicator is displayed, but nothing
else happens because the first instruction is to wait. Type an
entry, press [Enter], and the cell pointer will move down. Since
you don't need a cursor key, you could leave the [Num Lock] on.
So far, however, this is not very helpful since typing Alt-M
before each entry is more bother than any of the alternatives.
Creating a Looping Macro
The solution is the loop. To make the macro repeat itself, an
"invisible" X command in the 1-2-3 top level command menu (the
one that begins "Worksheet...Range...") must be used. /X commands
may only be used in macros. 1-2-3 commands are written in macros
as a slash (/) followed by one or more letters. The /X commands
consist of /X followed by one letter. For example, /XQ quits a
macro and /XM puts up the command menu. /XG is the macro Goto
1
command that may be used to make a macro loop. (By the way, don't
confuse /XG with the F5 {goto} key, which moves the cell pointer,
and which can also be used in macros.)
The /XG command tells 1-2-3 to get its next macro instruction
from somewhere other than the rest of the label or the next label
cell down, as it normally would. After the G, enter a cell
coordinate or range name, to tell 1-2-3 where to get its next set
of instructions. Enter a tilde (~) after the coordinate or range
name.
HINT: Using range names is better than using cell coordinates
because it will insure that the macro will function
correctly when you /Move cells, or /Worksheet Insert and
Delete Rows and Columns. Assign range names to individual
cells containing macro commands. To keep things clear,
place the range names as labels in the column to the left
of the macro instructions, and use the /Range Name Label
Right command to assign them to the first step of each
macro routine. If a named range contains more than one
cell, the /XG command will begin execution at the top left
corner of the range.
In this case, it would be preferable for the entire macro to
repeat, and it already has a range name, \M. To make the macro
repeat, just type this label in the cell below the cell
containing {down}:
/XG\M~ Go back to the beginning of the macro.
After the macro has moved the cell pointer down, it performs the
instruction in the next cell in the macro. This instruction tells
1-2-3 to go back to the start of the macro, where it again waits
until you press [Enter], moves the cell pointer down, repeating
indefinitely.
Stopping This Macro
Now that an endless loop has been established, how can it be
stopped? The best method is to hold down the [Ctrl] key and press
[Scroll-Lock/Break]. When you see ERROR in the Mode Indicator,
don't worry. Press [Enter], [Esc], or [Ctrl-Break] again and
everything will be fine. This method can be used to stop
execution of any macro, a printing operation, or a long /Data
Table calculation. Before you [Ctrl-Break] out of this macro,
however, consider entering another column of numbers. While 1-2-3
is waiting (the CMD indicator is on), you may move the cell
pointer. Just turn off the [Num-Lock] or press shift while
pressing the cursor keys. Otherwise, you'll get a string of
digits typed in the current cell.
2
Clarifying the Meaning of Tilde (~)
You may have some lingering questions about the when's and why's
of the tilde. To further illustrate its use, examine the
following macro. It moves down a column of labels, editing each
one and stopping to allow you to add to the existing label.
\E {edit}{?}~ Edit the label and wait for [Enter].
{down} Move the cell pointer down.
/XG\E~ Repeat the macro from the beginning.
There are only two differences between this macro and the Move
Macro. The {edit} key is obvious. But why the tilde after the
{?}; you have to press [Enter] to resume the macro anyway. The
answer is that the {?} "swallows" the [Enter]; it is never sent
to 1-2-3. To exit Edit mode, you must press [Enter]. This is done
by the macro when it reads the tilde. In the Move Macro, no
[Enter] was needed and, just as none is needed when you are
entering values or labels, no tilde is required after the {?}.
{?} as a Breakpoint
If you're setting out to do more extensive macro programming, one
more hint is in order. The {?} wait instruction is what
programmers call a "breakpoint." It stops everything and lets you
examine your work. If you've written a large macro and it's not
doing what you think it should, put breakpoints at the ends of
several of your macro labels. Then, when execution stops, you can
look around the spreadsheet to see if, so far, things are as they
should be.
In Summary
The pointer movement was entered into three cells in a column,
but could be stored in any number of ways. If you use it a lot,
you might want to put it in one line:
\M {?}{down}/XG\M~ Wait, move down and repeat.
The Move Macro is handy; it could be tremendously helpful when
entering a large amount of numeric data.
3