View Single Post
  #2   Report Post  
JMB
 
Posts: n/a
Default

When you activate the macro recorder, you should get a toolbar w/two buttons
on it. One is to stop recording, the other turns on/off relative references.

You can use relative references in your code

Activecell.Range("B2").Select

This will select the cell one column to the right and one row down from the
activecell.

You can also use the offset method:

Activecell.Offset(1,1).Select

Which will also select the cell one column to the right and one row down
from the activecell.

Or something like:
ActiveCell.Offset(1, 1).Range("A1:G1").Select

Which will select a range that is 1 row by 7 columns. The leftmost cell in
this range will be one column to the right and one row down from the active
cell.


"edself" wrote:

Hello,

I'm totally new to macros in Visual Basic and need help. I'm running Office
2003 in Windows XP.

I tried to record a macro used to copy and rearrange information from one
worksheet to another.

When I recorded the macro, it used hard coded ranges which makes it
impossible to move information to different locations in the destination
spreadsheet. Instead, I'd like the macro to place the information RELATIVE
to the currenly selected cell in the destination worksheet.

I've included the macro text below. Notice all the absolute references on
the "NEW" or destination worksheet. I'd like to convert all those absolute
range references to relative ranges. Is that possible?

Is it possible at the time of recording a macro to tell Excel to keep all
range references relative to the currently active cell in each worksheet?

~~~~~~~~~~~~
Selection.Copy
Sheets("NEW").Select
Range("A51:A58").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=
_
xlNone, SkipBlanks:=False, Transpose:=False
Range("B43:B50").Select
Application.CutCopyMode = False
Selection.Copy
Range("B51").Select
ActiveSheet.Paste
Sheets("2003").Select
Range("C762:J762").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("NEW").Select
Range("C51").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True
Sheets("2003").Select
Range("K762").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("NEW").Select
Range("D51:D58").Select
ActiveSheet.Paste
Range("A59").Select
~~~~~~~~~~~~

Thanks in advance for your help!

Ed