2011-09-12 54 views
1

我需要在我的代碼中使用循環,並且在某種條件下我會插入一行。如何計算行數並將其作爲VBA插入行之間的條件?

Rowz = activesheet.Cells(Rows.Count, 1).End(xlUp).Row 
for j=3 to Rowz ' say number of rowz=1000 

但隨着行之間插入所以行數增加。比如在第200行插入4行和第500行我插入10行所以現在數字增加到1000以上,所以循環測試直到1000忽略由於插入而下推的剩餘行。但我需要執行循環直至最後一行偶數行插入

之間

我想用這些

for j=3 to activesheet.cells(Rows.count,1).End(xlUp).Row 

但價值沒有更新我猜它只是檢查高達1000只有它沒有更新在condtion中的行數值。

如何計算行數並在條件中創建行時保持它的狀態?

回答

6

你爲什麼不嘗試向後循環? for j = rowZ to 3 step -1
可能解決你的問題?


編輯:選項2,你可以在最後一前一後的細胞定義名稱,並參考該命名範圍:Range("myLastCell")。它會調整每次插入行時間....

+0

另一個w^ay也是這樣做的,也可以通過沿直方向(從3到rowZ)的循環來完成,但是每當插入一行時,每次執行插入時應該減少循環控制器變量(j)。 – Ahmad

+0

@Ahmad:可能有很多方法......但我喜歡簡單高效的方法:-) –

1

你可能會通過一系列嘗試循環:

Sub LoopRange() 
    Dim cell As Range, Rowz as Long 
    Rowz = Activesheet.Cells(Rows.count,1).End(xlUp).Row 
    For Each cell In Range("A1:A" & Rowz) 
    'do things 
    Next Bcell 
End Sub 

警告:的VBA將解析的整個範圍,包括插入行,所以如果你在每個循環中插入一行,你的程序將無限循環(注意,你可以使用Ctrl鍵+暫停停止你的代碼的執行,如果它發生)