none
Segundo error no se controla RRS feed

  • Pregunta

  • Buenos días.

    Tengo problemas con el control de errores. Resulta que, si la aplicación da un error, éste lo controla perfectamente, pero al hacer el goto para que me redirija a la línea de código por la que quiero continuar (goto siguiente), si se vuelve a producir un segundo error, éste no es controlado y bloquea el proceso. ¿Cuál es la solución?

    Un ejemplo muy simple (en el click de un botón):

    Private Sub Command1_Click()
        Dim i As Integer
        On Error GoTo solu
        For i = 0 To 10
            i = 5 / 0
    siguiente:
        Next
        Exit Sub
    solu:
        MsgBox "CONTROLADO"
        GoTo siguiente
    End Sub

    Un saludo.

    martes, 16 de agosto de 2011 7:19

Respuestas

  • No funciona:

    Private Sub Command1_Click()
        Dim i As Integer
        On Error GoTo solu
        For i = 0 To 10
            i = 5 / 0
    siguiente:
            On Error GoTo solu
        Next
        Exit Sub
    solu:
        MsgBox "CONTROLADO"
        GoTo siguiente
    End Sub

    ¿Alguna otra solución?

    EDIT:

    Vale, había que añadir además un GoTo -1:

    Private Sub Command1_Click()
        Dim i As Integer
       
        On Error GoTo solu

        For i = 0 To 10
            i = 5 / 0
    siguiente:
            On Error GoTo -1
            On Error GoTo solu
        Next
        Exit Sub
    solu:
        MsgBox "CONTROLADO"
        GoTo siguiente
    End Sub


    • Marcado como respuesta David Horno miércoles, 17 de agosto de 2011 6:42
    miércoles, 17 de agosto de 2011 6:29

Todas las respuestas

  • Tenes que volver a escribir el on error goto ya que lo pierde.
    martes, 16 de agosto de 2011 23:44
  • No funciona:

    Private Sub Command1_Click()
        Dim i As Integer
        On Error GoTo solu
        For i = 0 To 10
            i = 5 / 0
    siguiente:
            On Error GoTo solu
        Next
        Exit Sub
    solu:
        MsgBox "CONTROLADO"
        GoTo siguiente
    End Sub

    ¿Alguna otra solución?

    EDIT:

    Vale, había que añadir además un GoTo -1:

    Private Sub Command1_Click()
        Dim i As Integer
       
        On Error GoTo solu

        For i = 0 To 10
            i = 5 / 0
    siguiente:
            On Error GoTo -1
            On Error GoTo solu
        Next
        Exit Sub
    solu:
        MsgBox "CONTROLADO"
        GoTo siguiente
    End Sub


    • Marcado como respuesta David Horno miércoles, 17 de agosto de 2011 6:42
    miércoles, 17 de agosto de 2011 6:29