home *** CD-ROM | disk | FTP | other *** search
-
-
-
- 1-2-3 Macro Tips
- The /XI Command
-
- The following is a set of tips on the use of the 1-2-3 macro
- command /XI, and some hints on the practical application of
- conditional statements. An example of a useful looping macro is
- explained that lets you use 1-2-3 as a simple word processor.
-
- Designing a Cleaner Printout
-
- An easy way to get cleaner looking printouts from spreadsheets is
- to cause all cells with a value of zero to appear blank. To do
- this we can use the /XI or If command. First we'll write a macro
- that checks to see if the value of a cell is zero, and, if it is,
- erases it. Then we'll expand the macro to include a loop so that
- it checks a cell, blanks it if it's zero, moves down and does the
- same thing to the next cell, and so on. Finally, we'll make the
- macro stop itself.
-
- Introducing the If Command
-
- The format of the If command, /XI is:
-
- /XIcondition~action if condition is true
-
- This command lets the macro make a decision. If a certain
- condition is true, then do a specified action.
-
- The condition is stated as an expression and written between the
- "/XI" and the tilde (~). Because cells in 1-2-3 can have a true
- or false value, the condition is stated using the cell coordin-
- ates or, preferably, the name of a cell. Typically, the condition
- looks something like the following three examples:
-
- NUMBER=5
- @sum(AMOUNTS)>10000
- @today>DUEDATE#and#AMOUNTDUE>0
-
- The action is defined by macro instructions written after the
- tilde. If the condition is true, these instructions are executed.
- The macro then continues on to the next cell down, if there is
- one, unless the action includes an /XG, (goto), an /XM (menu), an
- /XC (subroutine call) or an /XQ (quit). If the condition is
- false, the action is not executed, and the cell below is read.
-
- Creating the "Blank" Macro
-
- For our macro, the action is to make the current cell blank, so
- the instruction is /RE~ (/Range Erase [Return]) The condition is
- "the current cell equals zero." How do we find out the value of
- the current cell? Give it a range name and proceed as shown in
- this \B (for Blank) macro:
-
- \B /rncHERE~~ Create the range HERE.
- /xi(HERE=0)~/re~ If it's "0", make it blank.
-
-
- 1
-
-
-
-
-
-
-
-
- By the way, any text, i.e. alpha characters, in "HERE" will also
- be evaluated as equal to zero and erased by this macro. Make sure
- your spreadsheet is suitable for the \B macro.
-
- NOTE: (To help make macros easier to read, capitalize range
- names, leaving all other letters lower case and putting the
- conditions in parenthesis.) Notice the two tildes in the
- first line of this macro. When you name a range, you press
- [Return] to end the name. Then you specify the range.
- Pressing [Return] again indicates the range is simply the
- current cell. The tilde after the "/re" does the same
- thing.
-
- Adding the Loop
-
- Next, we want the macro to move down one cell and check again for
- a value of zero. However, if we try to do this the way we did in
- the last "Tips" column, by adding {down}/xg\B~, there will be a
- problem: The next time we try to create the range name "HERE", it
- already will exist. 1-2-3 will show us where it is by moving the
- cell pointer back to its old location and we won`t go anywhere.
- Therefore, we need to delete the range name. Add this line to the
- macro, and it will work:
-
- /rndHERE~{down}/xg\B~ Delete "HERE", move down
- and run \B again.
-
- A word of caution: You might be tempted to try another approach,
- adding a {bs}, (backspace) between the two tildes in /rncHERE~~.
- This puts the cell pointer back where it was when the command
- began. Sometimes this won't affect your worksheet, but other
- times it can cause problems. Why? Because when you redefine a
- name, i.e, change the cells it refers to, all references to that
- cell are redefined as well. Let's say you have a formula that
- adds two entries in a row -- D5+E5 -- and that our macro "passes
- through" D5 on its way down to D6, D7, etc. When the macro is on
- D5, the formula reads +HERE+E5. But when it moves on, the formula
- continues to read +HERE+E5, even when HERE is D2048.
-
- Moral: In macros, always delete range names before you move
- them.
-
- Stopping the Loop
-
- The easiest way to stop a loop is to choose a number that you
- know isn't in the column and place that number in the cell where
- you want the macro to stop. Often any negative number will do;
- we've used "-1." And now, the completed macro:
-
- \B /rncHERE~~
- /xi(HERE)=-1~/rndHERE~/re~/xq
- /xi(HERE=0)~/re~
- /rndHERE~{down}/xg\B~
-
-
-
-
- 2
-
-
-
-
-
-
-
-
- Before testing for the zero value, our \B macro first checks for
- the last cell. If it finds "-1", the macro thoughtfully deletes
- HERE (so you can use the macro again), erases the -1, and stops.
- A bit more computer jargon: the "-1" (or any special value that a
- program looks for) is a "flag." In this case, it flags down the
- macro to stop the loop.
-
- Creating a Simple Word Processor
-
- This little gem uses /Range Justify, a handy command that rear-
- ranges a column of long labels so that they fit within a
- specified width. See your manual or HELP screen if you're not
- familiar with /Range Justify.
-
- In /Range Justify you tell 1-2-3 how wide the text can be by
- pointing out a range. The words stay in the first column, but
- they extend out to the column you point to. In our example, the
- text will be two columns wide, though you can choose any number
- you like.
-
- By the way, don't use this macro above tables. If you do, you
- won't lose any data or change any values, but your columns will
- become misaligned because the justification affects everything,
- all the way down the columns in question.
-
- Here's the macro \E for edit:
-
- \E {edit}{?}~ Edit the cell until [Return]
- /rj{right}~ Justify over two columns
- {end}{down} Go to the bottom of the column
- /xg\E~ And start again
-
- The number of {right}s following the /rj determines how many
- columns wide the text will be.
-
- To use this macro, put the cell pointer where you want to type
- and press [Alt] [E]. Type away, occasionally pressing [Return]
- when you want to cause justification. To stop, press [Ctrl-
- Break].
-
- By the way, if you press [Return] before you've typed enough to
- go over the end of the second column, you'll {end} up at the
- bottom of the worksheet. Just press [Up] to get out of Edit Mode,
- [End][Up] to get back to the last line of the text, and [Edit]
- (F2) to put you back in Edit. You will still be in the macro.
-
- While this macro alone is no match for the features of the modern
- word processor, it's handy for short memos and letters. You can
- use it to create a "template" worksheet with a standard heading
- for your letters, another for your memos, including a cell with
- @today and a date format.
-
-
-
-
-
-
- 3
-
-
-
-
-
-
-
-
- In Closing
-
- We designed the \B macro to demonstrate general macro techniques.
- You can modify it to do almost anything you want to a group of
- cells in the worksheet. The \E macro is likely to be handier, and
- it suggests the potential of the {end} key. Experiment.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4
-
-
-
-
-