Transcript

Cancelar macro usando ESC con mensaje personalizado

Cancelar macro usando ESC con mensaje personalizadoSi lo que deseamos es que cuando nuestra macro dure demasiado, el usuario tenga la opcin de Cancelar la accin, pero con la salvedad de que podemos personalizar un mensaje de aviso que sustituya al clsico error de vba cuando cancelamos una macro.

Cdigo

Sub EnableCancelKey1()

Dim i As Double 'Cuando se genere un error nos mandar a la etiqueta ManejoError On Error GoTo ManejoError

Application.EnableCancelKey = xlErrorHandler

'Damos la opcin al usuario de poder cancelar la accin de la macro MsgBox "El siguiente cdigo puede tomar mucho tiempo: " & _

"presionar ESC para cancelar", vbInformation, "EXCELeINFO" For i = 1 To 100000

ActiveSheet.Range("A" & i).Value = i

Next i

'ManejoError:

If Err = 18 Then MsgBox "La accin se ha cancelado", vbExclamation, "EXCELeINFO" End IfEnd SubEvitar el uso de la tecla ESCExiste tambin la opcin de que impidamos que el usuario haga uso de la tecla ESC para cancelar la macro, pero tal accin debe programarse con cuidado, ya que si se corre una macro con un ciclo infinito, no se podr cancelar la macro.

Cdigo

Sub EnableCancelKey2()

Dim i As Double 'Deshabilitamos el uso de la tecla ESC Application.EnableCancelKey = xlDisabled

MsgBox "La siguiente macro no podr cancelarse", vbInformation, "EXCELeINFO" For i = 1 To 100000

ActiveSheet.Range("A" & i).Value = i

Application.StatusBar = Range("A" & i).Value

Next i

Application.StatusBar = FalseEnd Sub