# 1# 1 cs 105 spring 2010 macros: sub procedures you record what is a macro? what is with…end...
TRANSCRIPT
# 1CS 105 Spring 2010
Macros:Sub Procedures You Record
Macros:Sub Procedures You Record
What is a macro?
What is With…End With?
What is Sub…End Sub?
Relative vs. Absolute
# 2CS 105 Spring 2010
Macro Statements
• A Macro always begins a Sub statement
• A Macro ends with an End Sub statement
# 3CS 105 Spring 2010
A Macro
• To perform multiple actions on the same object Macros use
– With – End With
# 4CS 105 Spring 2010
Select and Do—the pattern
• Note how first the Macro selects the object, then executes the code…
# 5CS 105 Spring 2010
More about Macros…
• Step Into command helps you debug a macro
• Opening a file with a macro will prompt a question about viruses
# 6
Recording a Macro in Office 2007
• Go to Developer, click on Record Macro
CS 105 Spring 2010
# 7CS 105 Spring 2010
Record Macro
• Comments begin with an apostrophe (‘)
• Comments help the programmer, others to read code
# 8CS 105 Spring 2010
Calling Macros
• You can use macros easily becausethey are on a Module sheet, that makes them available to everything, so
all you do is write the macro name
# 9CS 105 Spring 2010
Finding the Stop Recording button in Office 2003
• We lost our little macro recorder button
• If you lose yours, go to View/Toolbars/Stop Recording, and it will appear on your spreadsheet or on a toolbar.
# 10
Stop Recording in Office 2007
• Developer, then click on Stop Recording
CS 105 Spring 2010
# 11CS 105 Spring 2010
Cell References in Macros
Absolute references—
When we specify exactly what cells are affected
Absolute cell address are constant
# 12CS 105 Spring 2010
An absolute Macro
• Range selects the starting or active cell/cells—the references below are absolute—whenever the Macro runs, these exact cells are selected
First, the cell is
selected, then
a number is placed
in it
# 13CS 105 Spring 2010
ActiveCell.FormulaR1C1
R1C1 is a reference style (you can set this under Tools/Options/General)
Don’t worry,we won’t be using thisin class. We want you to know where it came from.
# 14CS 105 Spring 2010
ActiveCell.FormulaR1C1 = "Income"
• All that you need to know is that for the active cell, the content is "Income"
• "FormulaR1C1" refers to the contents of the active cell
• You find this notation in Macros that you create
# 15CS 105 Spring 2010
FormulaR1C1 vs. Value
Range("D5").Select ActiveCell.FormulaR1C1 = "8" Range("D5").Select ActiveCell.Value = "8" These two code fragments produce the same results.
# 16CS 105 Spring 2010
What if you want to vary the cells?
# 17CS 105 Spring 2010
Relative references
We don’t always want the event to happen in the same place
• Cell addresses change
• Visual Basic uses Offset to indicate space away from active cell
# 18CS 105 Spring 2010
Recording a Macro with Relative References
Before you start recording your Macro, click on the
Relative Reference button
# 19
In Office 2007
• First, click on Use Relative References, then click Record Macro
CS 105 Spring 2010
# 20CS 105 Spring 2010
Relative Cell References
– ActiveCell.Offset(2, 0).Range("A1").Select– Means the cell two rows below the active
cell, in the same column
# 21CS 105 Spring 2010
ActiveCell.Offset(2, 0).Range("A1").Select
• What does ActiveCell.Offset(2, 0).Range("A1").Select mean?
How to I make the cell next to the active cell become the new active cell?
# 22CS 105 Spring 2010
Range("A1").Select
• This part of the code tells you
how many cells have been selected.
ActiveCell.Offset(2, 0).Range("A1").Select means 1 cell is selected
ActiveCell.Offset(2, 0).Range("A1:C1").Select
means 3 cells in a row have been selected (if you are in cell B2, then B2, C2, and D2 are selected)
# 23CS 105 Spring 2010
Activate or Select?
Range("B3").SelectSelection.Interior.ColorIndex = 6
Range("B3").ActivateSelection.Interior.ColorIndex = 6
• Both code fragments have the same result
# 24CS 105 Spring 2010
This Relative Macro Causes a Crash
# 25CS 105 Spring 2010
Run it line-by-line to find bug
Code runs OK until it reaches the line under the highlighted
line. You can turn your attention to the problem line
of code!
# 26CS 105 Spring 2010
To Summarize
• What is a macro?
• What is With…End With?
• What is Sub…End Sub?
• Relative vs. Absolute