Я все еще очень плохо знаком с VBA, поэтому я ценю любое терпение и руководство, которые вы готовы дать. Я пытался записать, сколько раз al oop приходится перезапускать для каждой строки и возился с ним достаточно долго, чтобы у меня не было идей, которые могли бы решить эту проблему.
JumpToHere:
On Error GoTo MyErrorHandler
Do Until IsEmpty(ActiveCell)
[SOME ".VALUE =" AND A BUNCH OF QUERIES HAPPEN HERE]
Application.ScreenUpdating = True
ActiveCell.Offset(1, 0).Select
DoEvents
With Application
.Calculation = xlManual
.ScreenUpdating = False
End With
MyErrorHandler:
Err.Clear
ActiveCell.Offset(0, 20).Value = ActiveCell.Offset(0, 20).Value + 1
Resume JumpToHere
Loop
My беспокойство (я считаю) связано с линией ActiveCell.Offset(0, 20).Value + 1
. Когда возникает ошибка, я хочу, чтобы макрос записывал 1 в ActiveCell.Offset(0, 20)
при возникновении первой ошибки, перезапустите l oop из той же строки, где произошла ошибка, затем добавьте +1 к ActiveCell.Offset(0, 20)
, если есть дополнительные ошибки / циклы, выполненные в строке.
В настоящее время макрос, кажется, никогда не добавляет счетчик ошибок в первую строку, но будет помещать значение 2 в каждую последующую строку, в том числе в первую пустую строку в нижняя часть данных для обработки, где не требуется никакой обработки. После того, как вся обработка ошибок закомментирована, макрос прекрасно проходит по всем строкам, поэтому я полагаю, что приведенный выше код не регистрирует количество ошибок.