Sub ee() On Error Resume Next For i = 1 To 5 c = i / 0 If Err Then Cells(i, "A") = "Ошибка" Err.Clear Else: Cells(i, "A") = "Норма" End If Next End Sub
[/vba]
добавлено: правда этот метод стоит использовать только, если Вы ошибку ждете и знаете какая она будет. или делать обработку номера ошибки.
Добрый день. [vba]
Код
Sub ee() On Error Resume Next For i = 1 To 5 c = i / 0 If Err Then Cells(i, "A") = "Ошибка" Err.Clear Else: Cells(i, "A") = "Норма" End If Next End Sub
[/vba]
добавлено: правда этот метод стоит использовать только, если Вы ошибку ждете и знаете какая она будет. или делать обработку номера ошибки.sboy
Неплохо, но все же я бы хотел чтоб код не возвращался сразу на следующую строку после ошибки а уходил в обработчик (потому как после ошибки следующие действия не будут генерировать ошибку но будут искажать данные). А ставить проверку if err тоже не ахти , откуда знать где стрельнет. Неужели нет решения?
Неплохо, но все же я бы хотел чтоб код не возвращался сразу на следующую строку после ошибки а уходил в обработчик (потому как после ошибки следующие действия не будут генерировать ошибку но будут искажать данные). А ставить проверку if err тоже не ахти , откуда знать где стрельнет. Неужели нет решения?skais
ставить проверку if err тоже не ахти , откуда знать где стрельнет. Неужели нет решения?
Есть - продумывать все тщательно при написании кода, и не допускать возникновения ошибки. Например для вашего примера достаточно добавить проверку на 0- второго аргумента. И поменьше использовать GOTO.
ставить проверку if err тоже не ахти , откуда знать где стрельнет. Неужели нет решения?
Есть - продумывать все тщательно при написании кода, и не допускать возникновения ошибки. Например для вашего примера достаточно добавить проверку на 0- второго аргумента. И поменьше использовать GOTO.SLAVICK
чтобы и на второй и последующих ошибках он срабатывал
вот так будет работать, но использовать не рекомендую [vba]
Код
Sub ee() On Error GoTo 1 For i = 1 To 5 c = i / 0 GoTo 2: 2: Cells(i, "A") = "Норма" 3: Next Exit Sub 1: Cells(i, "A") = "Ошибка" Err.Clear Resume 3 End Sub
чтобы и на второй и последующих ошибках он срабатывал
вот так будет работать, но использовать не рекомендую [vba]
Код
Sub ee() On Error GoTo 1 For i = 1 To 5 c = i / 0 GoTo 2: 2: Cells(i, "A") = "Норма" 3: Next Exit Sub 1: Cells(i, "A") = "Ошибка" Err.Clear Resume 3 End Sub