ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Autofil macro (https://www.excelbanter.com/excel-programming/421657-autofil-macro.html)

Kell2604

Autofil macro
 
Hi Guys,

I need some assistance with a macro. I need the macro to grab some formulas
from a static range of cells (B2 - G2) and paste that formula in a static
range (B4 - G4) and then I need it to autofill to the last empty row (the end
of this range is always changing or else I would use a static end range).
For example, today I might need it to fill all the way to B36 - G36 and
tomorrow I might need it to fill to B77 - G77. The end of the range is
determined by the column immediately preceeding the formulas. In my example
above A36 or A77.

A B C D E F G H
1 x formulas............
2 x fill formulas........
3 x fill formulas........
4
5
6 x end formula fill....
7
8
9
The copy and paste section of the macro is working fine, it's the autofil to
an always changing end row that I'm having trouble with. Hope this makes
sense.

This is what I have been using...maybe I'm not even close...

lRow = Range("AG4").End(xlDown).Row
Range("AH4").AutoFill Destination:=Range("AH4:AM" & lRow)

Thanks as always for your help!!
Kelley

Don Guillett

Autofil macro
 

spaces??
maybe
'lRow = Range("AG4").End(xlDown).Row
lRow = cells(rows.count,"AG4").End(xlUP).Row

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Kell2604" wrote in message
...
Hi Guys,

I need some assistance with a macro. I need the macro to grab some
formulas
from a static range of cells (B2 - G2) and paste that formula in a static
range (B4 - G4) and then I need it to autofill to the last empty row (the
end
of this range is always changing or else I would use a static end range).
For example, today I might need it to fill all the way to B36 - G36 and
tomorrow I might need it to fill to B77 - G77. The end of the range is
determined by the column immediately preceeding the formulas. In my
example
above A36 or A77.

A B C D E F G H
1 x formulas............
2 x fill formulas........
3 x fill formulas........
4
5
6 x end formula fill....
7
8
9
The copy and paste section of the macro is working fine, it's the autofil
to
an always changing end row that I'm having trouble with. Hope this makes
sense.

This is what I have been using...maybe I'm not even close...

lRow = Range("AG4").End(xlDown).Row
Range("AH4").AutoFill Destination:=Range("AH4:AM" & lRow)

Thanks as always for your help!!
Kelley



Kell2604

Autofil macro
 
Hello Don,

Thanks for your help. Just to confirm are you suggesting I swap out my
original line lRow = Range("AG4").End(xlDown).Row with what you have below...
lRow = cells(rows.count,"AG4").End(xlUP).Row. I tried that and am getting
the error: application-defined or object-defined error.

Or am I misunderstanding you?

"Don Guillett" wrote:


spaces??
maybe
'lRow = Range("AG4").End(xlDown).Row
lRow = cells(rows.count,"AG4").End(xlUP).Row

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Kell2604" wrote in message
...
Hi Guys,

I need some assistance with a macro. I need the macro to grab some
formulas
from a static range of cells (B2 - G2) and paste that formula in a static
range (B4 - G4) and then I need it to autofill to the last empty row (the
end
of this range is always changing or else I would use a static end range).
For example, today I might need it to fill all the way to B36 - G36 and
tomorrow I might need it to fill to B77 - G77. The end of the range is
determined by the column immediately preceeding the formulas. In my
example
above A36 or A77.

A B C D E F G H
1 x formulas............
2 x fill formulas........
3 x fill formulas........
4
5
6 x end formula fill....
7
8
9
The copy and paste section of the macro is working fine, it's the autofil
to
an always changing end row that I'm having trouble with. Hope this makes
sense.

This is what I have been using...maybe I'm not even close...

lRow = Range("AG4").End(xlDown).Row
Range("AH4").AutoFill Destination:=Range("AH4:AM" & lRow)

Thanks as always for your help!!
Kelley




Greg Snidow

Autofil macro
 
Don, what is the difference between finding the last row as you are doing
here, and doing it like this?

LstRow = [A65000].End(xlUp).Row

Is one method better than the other in certain situations? And if so, why?
Just trying to understand. Thanks

Greg

"Don Guillett" wrote:


spaces??
maybe
'lRow = Range("AG4").End(xlDown).Row
lRow = cells(rows.count,"AG4").End(xlUP).Row

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Kell2604" wrote in message
...
Hi Guys,

I need some assistance with a macro. I need the macro to grab some
formulas
from a static range of cells (B2 - G2) and paste that formula in a static
range (B4 - G4) and then I need it to autofill to the last empty row (the
end
of this range is always changing or else I would use a static end range).
For example, today I might need it to fill all the way to B36 - G36 and
tomorrow I might need it to fill to B77 - G77. The end of the range is
determined by the column immediately preceeding the formulas. In my
example
above A36 or A77.

A B C D E F G H
1 x formulas............
2 x fill formulas........
3 x fill formulas........
4
5
6 x end formula fill....
7
8
9
The copy and paste section of the macro is working fine, it's the autofil
to
an always changing end row that I'm having trouble with. Hope this makes
sense.

This is what I have been using...maybe I'm not even close...

lRow = Range("AG4").End(xlDown).Row
Range("AH4").AutoFill Destination:=Range("AH4:AM" & lRow)

Thanks as always for your help!!
Kelley




Greg Snidow

Autofil macro
 
Don, what is the difference between finding the last row as you are doing
here, lRow = cells(rows.count,"AG4").End(xlUP).Row, and as I usually do, like
this:
LstRow = [F65000].End(xlUp).Row? I see this method all the time, so it is
what I use in all my macros. Are there situations where your method would be
better? And if so, why? Just trying to understand. Thank you.

Greg

"Don Guillett" wrote:


spaces??
maybe
'lRow = Range("AG4").End(xlDown).Row
lRow = cells(rows.count,"AG4").End(xlUP).Row

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Kell2604" wrote in message
...
Hi Guys,

I need some assistance with a macro. I need the macro to grab some
formulas
from a static range of cells (B2 - G2) and paste that formula in a static
range (B4 - G4) and then I need it to autofill to the last empty row (the
end
of this range is always changing or else I would use a static end range).
For example, today I might need it to fill all the way to B36 - G36 and
tomorrow I might need it to fill to B77 - G77. The end of the range is
determined by the column immediately preceeding the formulas. In my
example
above A36 or A77.

A B C D E F G H
1 x formulas............
2 x fill formulas........
3 x fill formulas........
4
5
6 x end formula fill....
7
8
9
The copy and paste section of the macro is working fine, it's the autofil
to
an always changing end row that I'm having trouble with. Hope this makes
sense.

This is what I have been using...maybe I'm not even close...

lRow = Range("AG4").End(xlDown).Row
Range("AH4").AutoFill Destination:=Range("AH4:AM" & lRow)

Thanks as always for your help!!
Kelley




Don Guillett

Autofil macro
 
Should have been
lRow = cells(rows.count,"AG").End(xlUP).Row

Yours only uses 65000 rows which isn't accurate if using xl2007

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Greg Snidow" wrote in message
...
Don, what is the difference between finding the last row as you are doing
here, and doing it like this?

LstRow = [A65000].End(xlUp).Row

Is one method better than the other in certain situations? And if so,
why?
Just trying to understand. Thanks

Greg

"Don Guillett" wrote:


spaces??
maybe
'lRow = Range("AG4").End(xlDown).Row
lRow = cells(rows.count,"AG4").End(xlUP).Row

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Kell2604" wrote in message
...
Hi Guys,

I need some assistance with a macro. I need the macro to grab some
formulas
from a static range of cells (B2 - G2) and paste that formula in a
static
range (B4 - G4) and then I need it to autofill to the last empty row
(the
end
of this range is always changing or else I would use a static end
range).
For example, today I might need it to fill all the way to B36 - G36 and
tomorrow I might need it to fill to B77 - G77. The end of the range is
determined by the column immediately preceeding the formulas. In my
example
above A36 or A77.

A B C D E F G H
1 x formulas............
2 x fill formulas........
3 x fill formulas........
4
5
6 x end formula fill....
7
8
9
The copy and paste section of the macro is working fine, it's the
autofil
to
an always changing end row that I'm having trouble with. Hope this
makes
sense.

This is what I have been using...maybe I'm not even close...

lRow = Range("AG4").End(xlDown).Row
Range("AH4").AutoFill Destination:=Range("AH4:AM" & lRow)

Thanks as always for your help!!
Kelley





JE McGimpsey

Autofil macro
 
For one thing, 65000 is not the last row in a worksheet, even prior to
XL07, so if there were 65535 rows of data, your method would fail while
the first method would work.

Obviously, XL07/08 files have LOTS more than 65000 rows. The first
method will work on either file type.

Second, using the evaluate method as you're doing *can* be slightly more
inefficient than using Cells(). Won't make a jot of difference when run
once, but most people feel it's better coding practice.

Third, it's a lot easier to generalize the Cells() method. Instead of a
constant, the "AG4" part could be calculated, or specified in a
constant, making it much easier to change one calculation (or constant)
and have all Cells() methods adjust, rather than having to search the
project for each instance of "AG".

In article ,
Greg Snidow wrote:

Don, what is the difference between finding the last row as you are doing
here, lRow = cells(rows.count,"AG4").End(xlUP).Row, and as I usually do, like
this:
LstRow = [F65000].End(xlUp).Row? I see this method all the time, so it is
what I use in all my macros. Are there situations where your method would be
better? And if so, why? Just trying to understand. Thank you.


Greg Snidow

Autofil macro
 
Sorry for the double posting. The first time I hit 'Post' I got some strange
error message, then my window closed.

"Greg Snidow" wrote:

Don, what is the difference between finding the last row as you are doing
here, lRow = cells(rows.count,"AG4").End(xlUP).Row, and as I usually do, like
this:
LstRow = [F65000].End(xlUp).Row? I see this method all the time, so it is
what I use in all my macros. Are there situations where your method would be
better? And if so, why? Just trying to understand. Thank you.

Greg

"Don Guillett" wrote:


spaces??
maybe
'lRow = Range("AG4").End(xlDown).Row
lRow = cells(rows.count,"AG4").End(xlUP).Row

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Kell2604" wrote in message
...
Hi Guys,

I need some assistance with a macro. I need the macro to grab some
formulas
from a static range of cells (B2 - G2) and paste that formula in a static
range (B4 - G4) and then I need it to autofill to the last empty row (the
end
of this range is always changing or else I would use a static end range).
For example, today I might need it to fill all the way to B36 - G36 and
tomorrow I might need it to fill to B77 - G77. The end of the range is
determined by the column immediately preceeding the formulas. In my
example
above A36 or A77.

A B C D E F G H
1 x formulas............
2 x fill formulas........
3 x fill formulas........
4
5
6 x end formula fill....
7
8
9
The copy and paste section of the macro is working fine, it's the autofil
to
an always changing end row that I'm having trouble with. Hope this makes
sense.

This is what I have been using...maybe I'm not even close...

lRow = Range("AG4").End(xlDown).Row
Range("AH4").AutoFill Destination:=Range("AH4:AM" & lRow)

Thanks as always for your help!!
Kelley




Don Guillett

Autofil macro
 
Oops
lRow = cells(rows.count,"AG4").End(xlUP).Row

should be
lRow = cells(rows.count,"AG").End(xlUP).Row
It would only make a difference if your data had blanks in column AG

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Kell2604" wrote in message
...
Hello Don,

Thanks for your help. Just to confirm are you suggesting I swap out my
original line lRow = Range("AG4").End(xlDown).Row with what you have
below...
lRow = cells(rows.count,"AG4").End(xlUP).Row. I tried that and am getting
the error: application-defined or object-defined error.

Or am I misunderstanding you?

"Don Guillett" wrote:


spaces??
maybe
'lRow = Range("AG4").End(xlDown).Row
lRow = cells(rows.count,"AG4").End(xlUP).Row

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Kell2604" wrote in message
...
Hi Guys,

I need some assistance with a macro. I need the macro to grab some
formulas
from a static range of cells (B2 - G2) and paste that formula in a
static
range (B4 - G4) and then I need it to autofill to the last empty row
(the
end
of this range is always changing or else I would use a static end
range).
For example, today I might need it to fill all the way to B36 - G36 and
tomorrow I might need it to fill to B77 - G77. The end of the range is
determined by the column immediately preceeding the formulas. In my
example
above A36 or A77.

A B C D E F G H
1 x formulas............
2 x fill formulas........
3 x fill formulas........
4
5
6 x end formula fill....
7
8
9
The copy and paste section of the macro is working fine, it's the
autofil
to
an always changing end row that I'm having trouble with. Hope this
makes
sense.

This is what I have been using...maybe I'm not even close...

lRow = Range("AG4").End(xlDown).Row
Range("AH4").AutoFill Destination:=Range("AH4:AM" & lRow)

Thanks as always for your help!!
Kelley





Kell2604

Autofil macro
 
Guys...I'm still getting an error.

This formula works great if I'm just trying to autofil 1 column. I seem to
be having trouble with autofilling 5 consecutive columns. I could do it one
by one with my original code but that seems like a lot of unnecessary work.

This is what I have currently...with the updates suggested.
lRow = Cells(Rows.Count, "AG").End(xlUp).Row
Range("AG4").AutoFill Destination:=Range("AG4:AM" & lRow)

New error - AutoFill method of Range class failed.




"JE McGimpsey" wrote:

For one thing, 65000 is not the last row in a worksheet, even prior to
XL07, so if there were 65535 rows of data, your method would fail while
the first method would work.

Obviously, XL07/08 files have LOTS more than 65000 rows. The first
method will work on either file type.

Second, using the evaluate method as you're doing *can* be slightly more
inefficient than using Cells(). Won't make a jot of difference when run
once, but most people feel it's better coding practice.

Third, it's a lot easier to generalize the Cells() method. Instead of a
constant, the "AG4" part could be calculated, or specified in a
constant, making it much easier to change one calculation (or constant)
and have all Cells() methods adjust, rather than having to search the
project for each instance of "AG".

In article ,
Greg Snidow wrote:

Don, what is the difference between finding the last row as you are doing
here, lRow = cells(rows.count,"AG4").End(xlUP).Row, and as I usually do, like
this:
LstRow = [F65000].End(xlUp).Row? I see this method all the time, so it is
what I use in all my macros. Are there situations where your method would be
better? And if so, why? Just trying to understand. Thank you.



Greg Snidow

Autofil macro
 
JE, thanks for the tips. I did realize about the number of rows, so I should
have stated that one was known. Anyhow, I have learned something new, so
thank you.

Greg

"JE McGimpsey" wrote:

For one thing, 65000 is not the last row in a worksheet, even prior to
XL07, so if there were 65535 rows of data, your method would fail while
the first method would work.

Obviously, XL07/08 files have LOTS more than 65000 rows. The first
method will work on either file type.

Second, using the evaluate method as you're doing *can* be slightly more
inefficient than using Cells(). Won't make a jot of difference when run
once, but most people feel it's better coding practice.

Third, it's a lot easier to generalize the Cells() method. Instead of a
constant, the "AG4" part could be calculated, or specified in a
constant, making it much easier to change one calculation (or constant)
and have all Cells() methods adjust, rather than having to search the
project for each instance of "AG".

In article ,
Greg Snidow wrote:

Don, what is the difference between finding the last row as you are doing
here, lRow = cells(rows.count,"AG4").End(xlUP).Row, and as I usually do, like
this:
LstRow = [F65000].End(xlUp).Row? I see this method all the time, so it is
what I use in all my macros. Are there situations where your method would be
better? And if so, why? Just trying to understand. Thank you.



Gord Dibben

Autofil macro
 
Maybe?

Sub Auto_Fill()
Dim Lrow As Long
With ActiveSheet
Lrow = .Range("AG" & Rows.Count).End(xlUp).Row
.Range("AG4:AM" & Lrow).FillDown
End With
End Sub


Gord Dibben MS Excel MVP

On Tue, 23 Dec 2008 09:30:04 -0800, Kell2604
wrote:

Guys...I'm still getting an error.

This formula works great if I'm just trying to autofil 1 column. I seem to
be having trouble with autofilling 5 consecutive columns. I could do it one
by one with my original code but that seems like a lot of unnecessary work.

This is what I have currently...with the updates suggested.
lRow = Cells(Rows.Count, "AG").End(xlUp).Row
Range("AG4").AutoFill Destination:=Range("AG4:AM" & lRow)

New error - AutoFill method of Range class failed.




"JE McGimpsey" wrote:

For one thing, 65000 is not the last row in a worksheet, even prior to
XL07, so if there were 65535 rows of data, your method would fail while
the first method would work.

Obviously, XL07/08 files have LOTS more than 65000 rows. The first
method will work on either file type.

Second, using the evaluate method as you're doing *can* be slightly more
inefficient than using Cells(). Won't make a jot of difference when run
once, but most people feel it's better coding practice.

Third, it's a lot easier to generalize the Cells() method. Instead of a
constant, the "AG4" part could be calculated, or specified in a
constant, making it much easier to change one calculation (or constant)
and have all Cells() methods adjust, rather than having to search the
project for each instance of "AG".

In article ,
Greg Snidow wrote:

Don, what is the difference between finding the last row as you are doing
here, lRow = cells(rows.count,"AG4").End(xlUP).Row, and as I usually do, like
this:
LstRow = [F65000].End(xlUp).Row? I see this method all the time, so it is
what I use in all my macros. Are there situations where your method would be
better? And if so, why? Just trying to understand. Thank you.





All times are GMT +1. The time now is 10:08 AM.

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