Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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. |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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. |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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. |
#11
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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. |
#12
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Need to autofil a formula that is not recognised? | Excel Discussion (Misc queries) | |||
simple question on formulas and autofil | Excel Worksheet Functions | |||
Autofil from a list box (data validation) | Excel Programming | |||
Autofil a cell in the same row. | Excel Worksheet Functions | |||
Excel VBA question - Running a autofil | Excel Programming |