ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Copy and Paste Macro (https://www.excelbanter.com/excel-programming/350614-copy-paste-macro.html)

dannykuk

Copy and Paste Macro
 
I have recorded the following Macro
Windows("Copy of Headcount Review 2006.xls").Activate
ActiveWindow.SmallScroll Down:=-21
Range("A3:AF44").Select
Selection.Copy
Windows("Core Data Example.xls").Activate
Sheets("UK Downstream").Select
Range("A3").Select
Selection.Insert Shift:=xlDown
This is to import data which will be arriving Friday from 20+ business units
into a single core data sheet with tabs for each unit. The problem I have is
the Range("A3:AF44").Select line the reason being that although the columns
will be A:AF will stay constant the rows will vary. I have found the
following pieces of code to select a variable range
dim LastRow as long
with worksheets("sheet1")
lastrow = .cells(.rows.count,"A").end(xlup).row
.range("a1:x" & lastrow).copy _
destination:=....
end with
Or
Set rng = Range(Range("A1"), Cells(Rows.Count, "A").End(xlUp)).Resize(,
21)
rng.Name = "range_name"
Would anyone be able to tell me which is best and how i would insert it into
the code above??

GB

Copy and Paste Macro
 
I don't have an answer to best, but insertion would be to set a variable to
the result of whatever method. Then modify your code to do the following at
least for the copy/select. Assume the variable is called NumLastRow
Where it says Range("A3:AF44").Select use
Range("A3:AF" & NumLastRow).Select

The designation of NumLastRow actually equalling the last row, must be
somewhere before this line.

To improve on your current code. I don't see why the SmallScroll is needed.
(You may have scrolled the window when recording the macro. So you could
delete that line.

Second, because the record macro option builds the macro as you take action,
you do not need to have the Range.Select followed by Selection Copy. You
could just have Range (as inserted above).Copy and delete the selection.copy
line. Similar actions could be "combined" in the lines following it.

Taking a quick look, I think both do the same thing, and it is a matter of
you being able to understand them when you're done. The second function
appears to resize the height of the rows, however I can not currently
investigate what Resize does.

Beware that both functions operate off of column A, and start at A1. If you
do not have data in every row of column A for which you want to determine
your last row, then this will not do what you want. I think that the
functions actually require contiguous data, but I'm not sure, again I do not
have access to the VBA help files at the moment. :\



"dannykuk" wrote:

I have recorded the following Macro
Windows("Copy of Headcount Review 2006.xls").Activate
ActiveWindow.SmallScroll Down:=-21
Range("A3:AF44").Select
Selection.Copy
Windows("Core Data Example.xls").Activate
Sheets("UK Downstream").Select
Range("A3").Select
Selection.Insert Shift:=xlDown
This is to import data which will be arriving Friday from 20+ business units
into a single core data sheet with tabs for each unit. The problem I have is
the Range("A3:AF44").Select line the reason being that although the columns
will be A:AF will stay constant the rows will vary. I have found the
following pieces of code to select a variable range
dim LastRow as long
with worksheets("sheet1")
lastrow = .cells(.rows.count,"A").end(xlup).row
.range("a1:x" & lastrow).copy _
destination:=....
end with
Or
Set rng = Range(Range("A1"), Cells(Rows.Count, "A").End(xlUp)).Resize(,
21)
rng.Name = "range_name"
Would anyone be able to tell me which is best and how i would insert it into
the code above??


GB

Copy and Paste Macro
 
Ohh, I also assumed that only the last row would change. If the first row
will also change, you can make a similar program change to "locate" the first
row, but you will have to be sure that you can actually identify the first
row either from some known information or by user interaction.


"dannykuk" wrote:

I have recorded the following Macro
Windows("Copy of Headcount Review 2006.xls").Activate
ActiveWindow.SmallScroll Down:=-21
Range("A3:AF44").Select
Selection.Copy
Windows("Core Data Example.xls").Activate
Sheets("UK Downstream").Select
Range("A3").Select
Selection.Insert Shift:=xlDown
This is to import data which will be arriving Friday from 20+ business units
into a single core data sheet with tabs for each unit. The problem I have is
the Range("A3:AF44").Select line the reason being that although the columns
will be A:AF will stay constant the rows will vary. I have found the
following pieces of code to select a variable range
dim LastRow as long
with worksheets("sheet1")
lastrow = .cells(.rows.count,"A").end(xlup).row
.range("a1:x" & lastrow).copy _
destination:=....
end with
Or
Set rng = Range(Range("A1"), Cells(Rows.Count, "A").End(xlUp)).Resize(,
21)
rng.Name = "range_name"
Would anyone be able to tell me which is best and how i would insert it into
the code above??



All times are GMT +1. The time now is 08:11 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com