ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Change the FOR loop top (https://www.excelbanter.com/excel-programming/335363-change-loop-top.html)

Davide

Change the FOR loop top
 
Hi,
I have a For loop that delets some rows from a sheet .
The start value for the loop is 1 and the end value is the record count
which is the number of rows in the sheet. When I delete a row I have less
rows in the sheet so I decreese the record count by one and I want that the
loop will loop just as the new value of the record count not its first value.
For i=1 to recordCount
...
objWS.rows(i).Delete
recordCount=recordCount-1
next

Thanks

Nigel

Change the FOR loop top
 
The best approach is to loop from the bottom to the top.

For xR = LastRow to 1 step -1

' your code

Next xR

To determine the Last Row use.....

Dim LastRow as Long
LastRow = Cells(Rows.Count,"A").End(xlup).Row

This will determine the last row in Column A, change his as required. You
can also use the column Number eg

LastRow = Cells(Rows.Count,1).End(xlup).Row


--
Cheers
Nigel



"DavidE" wrote in message
...
Hi,
I have a For loop that delets some rows from a sheet .
The start value for the loop is 1 and the end value is the record count
which is the number of rows in the sheet. When I delete a row I have less
rows in the sheet so I decreese the record count by one and I want that

the
loop will loop just as the new value of the record count not its first

value.
For i=1 to recordCount
...
objWS.rows(i).Delete
recordCount=recordCount-1
next

Thanks




Dave Peterson

Change the FOR loop top
 
If you start from the bottom and work up, you're life will be much easier:

for i = recordcount to -1 step -1
if something is true or false then
rows(i).delete
end if
next i



DavidE wrote:

Hi,
I have a For loop that delets some rows from a sheet .
The start value for the loop is 1 and the end value is the record count
which is the number of rows in the sheet. When I delete a row I have less
rows in the sheet so I decreese the record count by one and I want that the
loop will loop just as the new value of the record count not its first value.
For i=1 to recordCount
...
objWS.rows(i).Delete
recordCount=recordCount-1
next

Thanks


--

Dave Peterson

Davide

Change the FOR loop top
 
Thanks you Dave and Nigel. Now it's works perfect

"Dave Peterson" wrote:

If you start from the bottom and work up, you're life will be much easier:

for i = recordcount to -1 step -1
if something is true or false then
rows(i).delete
end if
next i



DavidE wrote:

Hi,
I have a For loop that delets some rows from a sheet .
The start value for the loop is 1 and the end value is the record count
which is the number of rows in the sheet. When I delete a row I have less
rows in the sheet so I decreese the record count by one and I want that the
loop will loop just as the new value of the record count not its first value.
For i=1 to recordCount
...
objWS.rows(i).Delete
recordCount=recordCount-1
next

Thanks


--

Dave Peterson



All times are GMT +1. The time now is 12:30 PM.

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