Добрый день! Никак не могу разобраться, как нужно проверять на ошибки, если надо проверить два блока последовательно? Есть такой блок кода: [vba]
Код
On Error GoTo 10 With Sheets("Æóðíàë ÈÁ") If .FilterMode Then .ShowAllData iRow = .Range(.Cells(5, 54), .Cells(.Cells(Rows.Count, 54).End(xlUp).Row, 54)).Find(What:="S").Row End With On Error GoTo -1 10: On Error GoTo 20 With Sheets("Æóðíàë ÈÁ") If .FilterMode Then .ShowAllData strIts = .Range(.Cells(5, 54), .Cells(.Cells(Rows.Count, 54).End(xlUp).Row, 54)).Find(What:="N").Row End With On Error GoTo 0 20:
[/vba] При проверке второго блока, при не нахождении "N", выводит ошибку, а не отменят действие, как это происходит в первом блоке.
Добрый день! Никак не могу разобраться, как нужно проверять на ошибки, если надо проверить два блока последовательно? Есть такой блок кода: [vba]
Код
On Error GoTo 10 With Sheets("Æóðíàë ÈÁ") If .FilterMode Then .ShowAllData iRow = .Range(.Cells(5, 54), .Cells(.Cells(Rows.Count, 54).End(xlUp).Row, 54)).Find(What:="S").Row End With On Error GoTo -1 10: On Error GoTo 20 With Sheets("Æóðíàë ÈÁ") If .FilterMode Then .ShowAllData strIts = .Range(.Cells(5, 54), .Cells(.Cells(Rows.Count, 54).End(xlUp).Row, 54)).Find(What:="N").Row End With On Error GoTo 0 20:
[/vba] При проверке второго блока, при не нахождении "N", выводит ошибку, а не отменят действие, как это происходит в первом блоке.Паштет
Сообщение отредактировал Паштет - Понедельник, 27.02.2023, 10:31
Что мешает сделать On Error Resume Next в самом начале и проверки через блок If Err <> 0 после каждого потенциального места ошибки? В GoTo запутаетесь...
Что мешает сделать On Error Resume Next в самом начале и проверки через блок If Err <> 0 после каждого потенциального места ошибки? В GoTo запутаетесь...Gustav
[offtop]Почему картинка в пост не вставляется?[/offtop]
[vba]
Код
On Error Resume Next With Sheets("?o?iae EA") If .FilterMode Then .ShowAllData iRow = .Range(.Cells(5, 54), .Cells(.Cells(Rows.Count, 54).End(xlUp).Row, 54)).Find(What:="S").Row End With If Err Then Err.Clear With Sheets("?o?iae EA") If .FilterMode Then .ShowAllData strIts = .Range(.Cells(5, 54), .Cells(.Cells(Rows.Count, 54).End(xlUp).Row, 54)).Find(What:="N").Row End With If Err Then Err.Clear
[/vba]
Что есть [vba]
Код
On Error GoTo -1
[/vba]
[offtop]Почему картинка в пост не вставляется?[/offtop]
[vba]
Код
On Error Resume Next With Sheets("?o?iae EA") If .FilterMode Then .ShowAllData iRow = .Range(.Cells(5, 54), .Cells(.Cells(Rows.Count, 54).End(xlUp).Row, 54)).Find(What:="S").Row End With If Err Then Err.Clear With Sheets("?o?iae EA") If .FilterMode Then .ShowAllData strIts = .Range(.Cells(5, 54), .Cells(.Cells(Rows.Count, 54).End(xlUp).Row, 54)).Find(What:="N").Row End With If Err Then Err.Clear
Тоже не так давно впервые столкнулся с -1. Пока толком не вкурил, зачем этот нюанс.
В Сети лучше искать без минуса, т.е. по строке "On Error GoTo 1", с -1 как-то не очень находится.
Вот две ссылки, причем по первой -1 является чуть ли не официальной опцией. Но народ большей частью недоумевает, поэтому задаёт вопрос по второй ссылке:
Тоже не так давно впервые столкнулся с -1. Пока толком не вкурил, зачем этот нюанс.
В Сети лучше искать без минуса, т.е. по строке "On Error GoTo 1", с -1 как-то не очень находится.
Вот две ссылки, причем по первой -1 является чуть ли не официальной опцией. Но народ большей частью недоумевает, поэтому задаёт вопрос по второй ссылке: