Как посчитать количество строк и сделать это условием, когда VBA вставляет строки между ними? - PullRequest
1 голос
/ 12 сентября 2011

Мне нужно использовать цикл в моем коде, и при определенных условиях я буду вставлять строку.

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только не обновляет значение числа строк в условии to.

Как подсчитать количество строк и сохранить его в состоянии, если строки создаются между ними?

Ответы [ 2 ]

6 голосов
/ 12 сентября 2011

Почему бы вам не попробовать цикл в обратном направлении? for j = rowZ to 3 step -1.
Может ли это решить вашу проблему?


Редактировать: опция 2, вы можете определить имя ячейки после последней и ссылаться на этот Именованный диапазон: Range("myLastCell"). Он будет корректироваться каждый раз, когда вы вставляете строки ....

1 голос
/ 12 сентября 2011

Вы можете попытаться перебрать диапазон:

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 + Пауза , чтобы остановить выполнение вашего кода, если это произойдет)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...