home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 June / SIMTEL_0692.cdr / msdos / lotus123 / lotushlp.arc / LOTUS3.DOC < prev    next >
Text File  |  1985-05-31  |  9KB  |  265 lines

  1.  
  2.  
  3.  
  4.                                 1-2-3 Macro Tips
  5.                                  The /XI Command
  6.  
  7.         The  following  is a set of tips on the use of  the  1-2-3  macro 
  8.         command  /XI,  and  some  hints on the practical  application  of 
  9.         conditional statements.  An example of a useful looping macro  is 
  10.         explained that lets you use 1-2-3 as a simple word processor.
  11.  
  12.         Designing a Cleaner Printout
  13.  
  14.         An easy way to get cleaner looking printouts from spreadsheets is 
  15.         to  cause all cells with a value of zero to appear blank.  To  do 
  16.         this we can use the /XI or If command.  First we'll write a macro 
  17.         that checks to see if the value of a cell is zero, and, if it is, 
  18.         erases it.  Then we'll expand the macro to include a loop so that 
  19.         it checks a cell, blanks it if it's zero, moves down and does the 
  20.         same thing to the next cell,  and so on.  Finally, we'll make the 
  21.         macro stop itself.
  22.  
  23.         Introducing the If Command
  24.  
  25.         The format of the If command, /XI is:
  26.  
  27.                /XIcondition~action if condition is true
  28.  
  29.         This  command  lets  the  macro make a  decision.  If  a  certain 
  30.         condition is true, then do a specified action.
  31.  
  32.         The condition is stated as an expression and written between  the 
  33.         "/XI"  and the tilde (~).  Because cells in 1-2-3 can have a true 
  34.         or false value,  the condition is stated using the cell  coordin-
  35.         ates or, preferably, the name of a cell. Typically, the condition 
  36.         looks something like the following three examples:
  37.  
  38.                NUMBER=5
  39.                @sum(AMOUNTS)>10000
  40.                @today>DUEDATE#and#AMOUNTDUE>0
  41.  
  42.         The  action  is defined by macro instructions written  after  the 
  43.         tilde. If the condition is true, these instructions are executed. 
  44.         The  macro then continues on to the next cell down,  if there  is 
  45.         one, unless the action includes an /XG, (goto), an /XM (menu), an 
  46.         /XC  (subroutine  call)  or an /XQ (quit).  If the  condition  is 
  47.         false, the action is not executed, and the cell below is read.
  48.  
  49.         Creating the "Blank" Macro
  50.  
  51.         For our macro,  the action is to make the current cell blank,  so 
  52.         the instruction is /RE~ (/Range Erase [Return]) The condition  is 
  53.         "the  current cell equals zero." How do we find out the value  of 
  54.         the  current cell?  Give it a range name and proceed as shown  in 
  55.         this \B (for Blank) macro:
  56.  
  57.                \B  /rncHERE~~             Create the range HERE.
  58.                    /xi(HERE=0)~/re~       If it's "0", make it blank.
  59.  
  60.  
  61.                                         1
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.         By the way,  any text, i.e. alpha characters, in "HERE" will also 
  71.         be evaluated as equal to zero and erased by this macro. Make sure 
  72.         your spreadsheet is suitable for the \B macro.
  73.  
  74.         NOTE: (To  help  make  macros easier to  read,  capitalize  range 
  75.               names, leaving all other letters lower case and putting the 
  76.               conditions  in parenthesis.) Notice the two tildes  in  the 
  77.               first line of this macro.  When you name a range, you press 
  78.               [Return]  to  end  the name.  Then you specify  the  range. 
  79.               Pressing  [Return] again indicates the range is simply  the 
  80.               current  cell.  The  tilde after the "/re"  does  the  same 
  81.               thing.
  82.  
  83.         Adding the Loop
  84.  
  85.         Next, we want the macro to move down one cell and check again for 
  86.         a value of zero.  However, if we try to do this the way we did in 
  87.         the last "Tips" column,  by adding {down}/xg\B~,  there will be a 
  88.         problem: The next time we try to create the range name "HERE", it 
  89.         already will exist.  1-2-3 will show us where it is by moving the 
  90.         cell  pointer back to its old location and we won`t go  anywhere. 
  91.         Therefore, we need to delete the range name. Add this line to the 
  92.         macro, and it will work:
  93.  
  94.                 /rndHERE~{down}/xg\B~       Delete "HERE", move down
  95.                                             and run \B again.
  96.  
  97.         A word of caution:  You might be tempted to try another approach, 
  98.         adding a {bs},  (backspace) between the two tildes in /rncHERE~~. 
  99.         This  puts  the cell pointer back where it was when  the  command 
  100.         began.  Sometimes  this  won't affect your worksheet,  but  other 
  101.         times  it can cause problems.  Why?  Because when you redefine  a 
  102.         name,  i.e, change the cells it refers to, all references to that 
  103.         cell  are redefined as well.  Let's say you have a  formula  that 
  104.         adds  two entries in a row -- D5+E5 -- and that our macro "passes 
  105.         through" D5 on its way down to D6,  D7, etc. When the macro is on 
  106.         D5, the formula reads +HERE+E5. But when it moves on, the formula 
  107.         continues to read +HERE+E5, even when HERE is D2048.
  108.  
  109.             Moral: In macros, always delete range names before you move
  110.                    them.
  111.  
  112.         Stopping the Loop
  113.  
  114.         The  easiest  way to stop a loop is to choose a number  that  you 
  115.         know isn't in the column and place that number in the cell  where 
  116.         you  want the macro to stop.  Often any negative number will  do; 
  117.         we've used "-1." And now, the completed macro:
  118.  
  119.                 \B   /rncHERE~~
  120.                      /xi(HERE)=-1~/rndHERE~/re~/xq
  121.                      /xi(HERE=0)~/re~
  122.                      /rndHERE~{down}/xg\B~
  123.  
  124.  
  125.  
  126.  
  127.                                         2
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.         Before testing for the zero value,  our \B macro first checks for 
  137.         the last cell.  If it finds "-1",  the macro thoughtfully deletes 
  138.         HERE (so you can use the macro again),  erases the -1, and stops. 
  139.         A bit more computer jargon: the "-1" (or any special value that a 
  140.         program  looks for) is a "flag." In this case,  it flags down the 
  141.         macro to stop the loop.
  142.  
  143.         Creating a Simple Word Processor
  144.  
  145.         This little gem uses /Range Justify,  a handy command that  rear-
  146.         ranges  a  column  of  long  labels so that  they  fit  within  a 
  147.         specified  width.  See your manual or HELP screen if  you're  not 
  148.         familiar with /Range Justify.
  149.  
  150.         In  /Range  Justify  you tell 1-2-3 how wide the text can  be  by 
  151.         pointing  out a range.  The words stay in the first  column,  but 
  152.         they extend out to the column you point to.  In our example,  the 
  153.         text will be two columns wide,  though you can choose any  number 
  154.         you like.
  155.  
  156.         By  the way,  don't use this macro above tables.  If you do,  you 
  157.         won't lose any data or change any values,  but your columns  will 
  158.         become  misaligned because the justification affects  everything, 
  159.         all the way down the columns in question.
  160.  
  161.         Here's the macro \E for edit:
  162.  
  163.                 \E   {edit}{?}~         Edit the cell until [Return]
  164.                      /rj{right}~        Justify over two columns
  165.                      {end}{down}        Go to the bottom of the column
  166.                      /xg\E~             And start again
  167.  
  168.         The  number  of  {right}s following the /rj determines  how  many 
  169.         columns wide the text will be.
  170.  
  171.         To  use this macro,  put the cell pointer where you want to  type 
  172.         and press [Alt] [E].  Type away,  occasionally pressing  [Return] 
  173.         when  you  want to cause justification.  To  stop,  press  [Ctrl-
  174.         Break].
  175.  
  176.         By  the way,  if you press [Return] before you've typed enough to 
  177.         go  over  the end of the second column,  you'll {end} up  at  the 
  178.         bottom of the worksheet. Just press [Up] to get out of Edit Mode, 
  179.         [End][Up]  to get back to the last line of the text,  and  [Edit] 
  180.         (F2) to put you back in Edit. You will still be in the macro.
  181.  
  182.         While this macro alone is no match for the features of the modern 
  183.         word processor,  it's handy for short memos and letters.  You can 
  184.         use  it to create a "template" worksheet with a standard  heading 
  185.         for your letters,  another for your memos,  including a cell with 
  186.         @today and a date format.
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.                                         3
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.         In Closing
  203.  
  204.         We designed the \B macro to demonstrate general macro techniques. 
  205.         You  can modify it to do almost anything you want to a  group  of 
  206.         cells in the worksheet. The \E macro is likely to be handier, and 
  207.         it suggests the potential of the {end} key. Experiment.
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.                                         4
  260.  
  261.  
  262.  
  263.  
  264.  
  265.