Проблема заключается в использовании меток внутри цикла.Измените логику своего кода и избавьтесь от них.К вашему сведению, вам нужно сбросить процедуру обработки ошибок, когда вы переходите к метке при ошибке, но опять же, вы все равно хотите избавиться от меток.
/ e: если быть более точным, on error goto Continue_Next
переходит к метке, которая находится за пределамицикла, и я считаю, что это вызывает ошибку.Если вы ожидаете ошибки здесь, поместите On Error Resume Next
сверху, проверьте свою ошибку, затем If Err.Number > 0 then Exit For
- ярлык не нужен.Не забудьте очистить процедуру обработки ошибок и ошибок.Попробуйте что-то вроде этого:
For Each ws In ThisWorkbook.Worksheets
Debug.Print ws.Range("A1").Parent.Name
colNo = ws.Cells(8, Columns.count).End(xlToLeft).Column
vCol = Application.WorksheetFunction.Transpose(ws.Range(Cells(8, 1).Address, Cells(10, colNo).Address).Value2)
If colNo > 1 Then
For coli = LBound(vCol, 1) To UBound(vCol, 1)
On Error Resume Next
'test your error
If Err.number > 0 Then Exit For
On Error GoTo 0
If IsDate(vCol(coli, 1)) = True Then vCol(coli, 1) = Year(vCol(coli, 1))
If vCol(coli, 1) = YearBC Then
If vCol(coli, 2) = MonthBC Then
If vCol(coli, 3) = Phase Then
colBC = coli
ws.Range(Cells(1, colBC + 1).Address).EntireColumn.Insert
ws.Range(Cells(1, colBC).Address, Cells(Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).row, colBC).Address).Copy
ws.Range(Cells(1, colBC + 1).Address).PasteSpecial Paste:=xlPasteValues
ws.Range(Cells(11, 10).Address, Cells(Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).row, 10).Address).Copy
ws.Range(Cells(11, colBC).Address).PasteSpecial Paste:=xlPasteFormulas
End If
End If
End If
Next coli
On Error GoTo 0
End If
Next ws