Самый быстрый способ циклического перемещения по динамическим строкам

Я видел предыдущую запись об этом и пытался ее применить, но я был не увенчан успехом.

Sub test() Dim i As Long Dim varray As Variant Sheets("Original").Select varray = Sheets("Original").Range("A10:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value For i = 10 To UBound(varray, 1) If Cells(i, 16).Value <> "" Then Cells(i + 1, 16).EntireRow.Insert Cells(i + 1, 1).EntireRow.Value = Cells(i, 1).EntireRow.Value Cells(i + 1, 6).Value = Cells(i, 16).Value Cells(i + 1, 1).Value = 20305 Cells(i + 1, 11).Value = "" Cells(i + 1, 12).Value = "" Cells(i + 1, 15).Value = "" Cells(i + 1, 16).Value = "" End If Next End Sub 

Он пропускает все для Loop и переходит к End Sub. Любая помощь?

благодаря

Есть несколько проблем с кодом, который у вас есть. Я попытался обратиться к ним в моем сценарии ниже. К сожалению, нет примеров ваших данных, с которыми вы работаете. Посмотрите и дайте мне знать, если что-то не работает.

 Option Explicit Sub test() 'Get used to declaring your worksheet 'and then reference that worksheet when wanting to access data form it. Dim OrigSht As Worksheet Set OrigSht = ThisWorkbook.Sheets("Original") Dim LastRowColA As Long LastRowColA = OrigSht.Cells(Rows.Count, "A").End(xlUp).Row 'Not sure why you wanted to use an Array, seeing as you dont use it in the loop. 'Unless you use it in some other code and this is a extract from other code. Dim varray As Variant varray = OrigSht.Range("A10:A" & LastRowColA).Value 'Using UBound could present errors if there was less than 10 lines of data _ it would then step the loop because the to value is less than the start 'Rather use the last row of column A as a end of the For loop 'The problem with editing a list of data form the begining of a list _ is that the list becomes longer as you add information, so when adding _ or deleting lines you always want to start at the end og the list Dim i As Long For i = LastRowColA To 10 Step -1 With OrigSht If .Cells(i, 16).Value <> "" Then .Cells(i + 1, 16).EntireRow.Insert .Cells(i + 1, 1).EntireRow.Value = .Cells(i, 1).EntireRow.Value .Cells(i + 1, 6).Value = .Cells(i, 16).Value .Cells(i + 1, 1).Value = 20305 .Cells(i + 1, 11).Value = "" .Cells(i + 1, 12).Value = "" .Cells(i + 1, 15).Value = "" .Cells(i + 1, 16).Value = "" End If End With Next End Sub 
  • Excel VBA - вложенный цикл для форматирования столбцов Excel
  • Как повторить код на основе числа в ячейке в Excel?
  • VBA для прокрутки рабочих листов, запускающих код, либо не работает, либо выполняет цикл, но не запускает код
  • Python, цикл высказываний, тянущихся от excel
  • Как я могу закодировать этот код до тех пор, пока не будет достигнута строка x?
  • Зацикливание выреза и вставки, если критерии выполнены
  • Вычитайте сумму из ячейки до тех пор, пока она не достигнет 0 многократной суммы напоминания
  • VBA суммирует диапазон переменных с непустыми ячейками и петлями через массив
  • Диапазоны дат прибытия VBA
  • Макро-код для повторения одного и того же процесса в каждой строке
  • Наиболее эффективный метод удаления строк с двумя условиями
  • Давайте будем гением компьютера.