Я создаю макрос, который будет просматривать папку для всех файлов xls определенного типа отчета и перечислить их на листе с целым путем. Затем он оценивает их в порядке возрастания и находит самый последний файл, который открывается, а информация из него копируется в пустой файл как процесс, объединяющий самые последние данные из нескольких видов отчетов.VBA цикл выхода в последнем истинном состоянии
Проблема выхода из цикла после того, как последний файл был найден:
Dim i As Variant
Dim myarray() As Integer
Dim myarray2() As Variant
i = 0
For Each cell In Range("C1:C" & x)
If InStr(1, cell, "proof") Then
i = i + 1
Debug.Print i & " " & cell.value
ReDim myarray(i)
ReDim Preserve myarray2(cell)
End If
Do
Loop Until InStr(1, cell, "proof")
Next cell
Это пробный код - это выглядит для всех файлов, которые имеют "proof"
в имени файла в указанной папке и затем печатает их в ближайшем окне. Динамический массив хранит каждое имя файла до тех пор, пока цикл не закончится, и цикл цикла Do Until
должен остановить его при последнем условии, которое проверяет как истинное - это файл, который будет затем открыт и информация будет скопирована. Дело в том, что петля Do Until
блокирует всю процедуру, так как первая итерация, которая является истиной, удовлетворит ее, и я не уверен, как ее завершить, где она должна ...
A Do-While
цикл просто заканчивается тем, что едет на велосипеде, когда ставится в одно и то же место.
Я не уверен, как вы определяете «последнее условие», но это 'do' цикл не имеет смысла, потому что он перезагружается для каждого' cell' и имеет такое же условие как «если» выше. Код внутри 'if' тоже не имеет смысла. Казалось бы, вы хотите удалить цикл 'do', измените внутренности' if', чтобы фактически сохранить значения в 'myarray2', чтобы' '' закончить нормально, а затем использовать последний элемент 'myarray2'. – GSerg
Проверенная ячейка в вашем 'do ... while' никогда не изменяется. Поэтому, если ячейка не является «доказательством», она будет зацикливаться навсегда. – litelite
@GSerit, это то, что последний «доказательный» файл хранится в myarray2, но на следующей итерации он заменяется файлом, который не соответствует критериям, поскольку макрос проверяет каждый файл в списке. Итак, моя головоломка сохраняет последний файл с «доказательством» в имени файла, в то время как цикл проходит через остальную часть списка. Это было обоснование петли Do-Until ... – quadrature