2
Cancelar macro usando ESC con mensaje personalizado Si lo que deseamos es que cuando nuestra macro dure demasiado, el usuario tenga la opción de Cancelar la acción, pero con la salvedad de que podemos personalizar un mensaje de aviso que sustituya al clásico error de vba cuando cancelamos una macro. Código 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 opción al usuario de poder cancelar la acción de la macro MsgBox "El siguiente código 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 acción se ha cancelado", vbExclamation, "EXCELeINFO" End If End Sub Evitar el uso de la tecla ESC Existe también la opción de que impidamos que el usuario haga uso de la tecla ESC para cancelar la macro, pero tal acción debe programarse con cuidado, ya que si se corre una macro con un ciclo infinito, no se podrá cancelar la macro. Código 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

Cancelar Macro Usando ESC Con Mensaje Personalizado

Embed Size (px)

Citation preview

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