Возникла такая проблема - необходимо внутри цикла обрабатывать ошибку, которая может повторяться на протяжении нескольких витков. Однако ошибка корректно обрабатывается лишь в первый раз, а на следующем витке уже вылезает сообщение об ошибке. Например, данный код выдаст ошибку (несовпадение типов) на втором витке:
Ошибк возникает вот почему:
http://msdn2.microsoft.com/en-us/library/5hsw66as(vs.71).aspx
If an error occurs while an error handler is active (between the occurrence of the error and a Resume, Exit Sub, Exit Function, or Exit Property statement), the current procedure's error handler can't handle the error. Control returns to the calling procedure. If the calling procedure has an enabled error handler, it is activated to handle the error. If the calling procedure's error handler is also active, control passes back through previous calling procedures until an enabled, but inactive, error handler is found. If no such error handler is found, the error is fatal at the point at which it actually occurred.
существует два варианта обработки ошибок:
On Error GoTo 0 disables error handling in the current procedure. It doesn't specify line 0 as the start of the error-handling code, even if the procedure contains a line numbered 0. Without an On Error GoTo 0 statement, an error handler is automatically disabled when a procedure is exited.
On Error GoTo -1 disables the exception in the current procedure. It doesn't specify line -1 as the start of the error-handling code, even if the procedure contains a line numbered -1. Without an On Error GoTo -1 statement, an exception is automatically disabled when a procedure is exited.
по умолчанию всегда стоит 0 и обрабатывается манипулятор ошибки, до 1-ой ошибки или выхода из процедуры, а не исключения
делай так:
Private Sub Command1_Click()
Dim FRT As Single
Dim t As Integer
For t = 1 To 3
On Error GoTo -1
On Error GoTo 1
FRT = "ggg"
1:
Next
End Sub
Все вышесказанное, включая код, я сделал для того, чтобы ты понял, почему возникает ошибка, но ни в как не пример того, как надо делать.
2-АлександР-
Не, Resume Next, к сожалению, не пойдет. Этот кусок кода я привел лишь для демонстрации проблемы - в реальном приложении в случае возникновения ошибки приходится выполнять определенные действия, поэтому без GoTo не обойтись.
Если юзать On Error GoTo, то в ерроре Resume Next означает, что прога должна идти дальше с того места, где была ошибка, а просто Resume - прога должна повторить место где была ошибка и идти дальше. Это я так, на заметочку.