Saltar al contenido

¿Cómo detener la ejecución del código VBA?

Hola usuario de nuestro sitio, tenemos la respuesta a tu interrogante, desplázate y la obtendrás aquí.

Solución:

Agregue otro botón llamado “CancelButton” que establezca una bandera y luego verifique esa bandera.

Si tiene bucles largos en las “cosas”, búsquelo allí también y salga si está configurado. Utilice DoEvents dentro de ciclos largos para asegurarse de que la interfaz de usuario funcione.

Bool Cancel
Private Sub CancelButton_OnClick()
    Cancel=True
End Sub
...
Private Sub SomeVBASub
    Cancel=False
    DoStuff
    If Cancel Then Exit Sub
    DoAnotherStuff
    If Cancel Then Exit Sub
    AndFinallyDothis
End Sub

¿Qué hay de Application.EnableCancelKey? Utilice el botón Esc

On Error GoTo handleCancel
Application.EnableCancelKey = xlErrorHandler
MsgBox "This may take a long time: press ESC to cancel"
For x = 1 To 1000000    ' Do something 1,000,000 times (long!)
    ' do something here
Next x

handleCancel:
If Err = 18 Then
    MsgBox "You cancelled"
End If

Fragmento de http://msdn.microsoft.com/en-us/library/aa214566(office.11).aspx

O, si quieres evitar el uso de un variable global Podrías usar el que rara vez se usa .Tag propiedad del formulario de usuario:

Private Sub CommandButton1_Click()
    Me.CommandButton1.Enabled = False 'Disabling button so user cannot push it
                                      'multiple times
    Me.CommandButton1.caption = "Wait..." 'Jamie's suggestion
    Me.Tag = "Cancel"
End Sub

Private Sub SomeVBASub
    If LCase(UserForm1.Tag) = "cancel" Then
        GoTo StopProcess
    Else
        'DoStuff
    End If

Exit Sub
StopProcess:
    'Here you can do some steps to be able to cancel process adequately
    'i.e. setting collections to "Nothing" deleting some files...
End Sub

Te invitamos a añadir valor a nuestro contenido informacional participando con tu experiencia en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *