A Static Function
добьется цели.
Static Function RowCounter() As Long
Dim i ' Value of locally declared variable is preserved between calls.
i = i + 1
RowCounter = i
End Function
Каждый раз, когда вы вызываете его из своей основной программы, i
будет увеличиваться на 1. Поскольку RowCounter
является статическим, он будет помнить, что значение i
находится между вызовами.
Запустите следующую подпрограмму несколько раз и посмотрите шаг MsgBox
. Текущая строка будет скопирована в «Sheet2». Замените его тем, что вы выбрали.
Sub main()
Dim iRow As Long
Do While iRow < 2 ' To skip headers row 1...
' Get next row number.
iRow = RowCounter
Loop
MsgBox iRow ' To show that each time main is called, iRow will be incremented by 1.
' Copy and paste that row...
Rows(iRow).Copy Destination:=Worksheets("Sheet2").Rows(2)
End Sub
Вы можете сбросить счетчик до нуля, зайдя в редактор VBA и нажав кнопку сброса (квадрат) на стандартной панели инструментов или в меню «Выполнить».
Если вы сохраните счетчик в какой-либо защищенной / скрытой ячейке или листе, его сброс будет PITA.