У меня есть макрос Excel VBA, который передает некоторые данные из одной рабочей книги в другую.Рабочая книга, в которую отправляются данные, состоит из 12 таблиц, каждая из которых представляет месяц.Когда пользователь запускает макрос, он определяет, в какой лист вставить данные из некоторых передаваемых данных.Я поднимаю это, потому что проблема, с которой я сталкиваюсь, зависит от листа, на который будут вставлены данные.Часть макроса - это цикл do while, который находит следующую доступную строку для вставки данных.Этот цикл активируется только на определенных листах.Цикл пропускается на других листах.(Например, цикл будет активирован, если данные будут вставлены в декабрьский лист, но не в ноябрьский или январский.)
Я прошел макрос дважды.В первый раз я установил данные для вставки в декабрьский лист, и цикл работал правильно.
Во второй раз я установил данные для вставки в январский лист, и цикл был пропущен.
With wbOut.Sheets(strSheet)
.Activate
nLastRowOut = .Range("A500").End(xlUp).Row + 1
i = 220
nLastRowOut = i
Do While (i > 41)
str = .Range("A" & i).Value & .Range("B" & i).Value & .Range("C" & i).Value & .Range("D" & i).Value & .Range("E" & i).Value & .Range("F" & i).Value & .Range("G" & i).Value & .Range("H" & i).Value & .Range("I" & i).Value & .Range("J" & i).Value & .Range("K" & i).Value & .Range("L" & i).Value & .Range("M" & i).Value
If Replace(str, 0, "") <> "" Then
nLastRowOut = i + 1
GoTo copySections
End If
i = i - 1
Loop
Следующая доступная строка должна быть найдена и затем использована для вставки данных.
То, что на самом деле происходит в 75% случаев, заключается в том, что цикл пропускается и данные вставляются в строку 221 вместо следующей доступной строки.