prucommercialre.com


Anular un Macro Control y Retención

Cuando está desarrollando una macro para que otros utilicen, es posible que desee agregar un método para que el usuario salga de la macro antes de que termine, y aún así mantener el control de lo que la macro no. Ctrl + Pausa dejará una macro, pero doesn 't sale de forma controlada, ya que permite al usuario ver el código en el Editor de VBA.

Hay varias maneras de abordar este problema. El primero es la construcción de un "¿quieres salir de" incitar a la macro, y luego tener la pantalla el símbolo macro periódicamente. Por ejemplo, considere el siguiente código:

Hacer ...

'Su código va aquí

Contador = Contador + 1
Si Contador MOD 25 = 0 Entonces
Si MsgBox ("Stop macro?", VbYesNo) = vbYes Entonces End
End If
Bucle

La construcción de macro se basa en la premisa de que usted tiene una serie de pasos que desea repetir una y otra vez, a través del uso de una estructura de Do ... Loop. Cada vez que a través del bucle, el valor de contador se incrementa. Cada 25 veces a través del bucle, el "dejar de macro?" solicitud se muestra, y el usuario tiene la oportunidad de salir.

Este enfoque es fácil de implementar y puede funcionar bastante bien para algunos propósitos. El mayor inconveniente de este enfoque, sin embargo, es que no permite la inmediatez-el usuario debe esperar a salir de la macro hasta que se han producido al menos 25 iteraciones.

Otro enfoque es el de "ocultar" el código VBA y aplicar una contraseña a la misma. Para ello, siga estos pasos desde el editor de VBA:

  1. Elija la opción Propiedades VBAProject en el menú Herramientas. El editor muestra el cuadro de diálogo Propiedades del proyecto.
  2. Asegúrese de que se muestra la ficha Protección. (Ver Figura 1.)

    Anular un Macro Control y Retención

    Figura 1. La ficha Protección del cuadro de diálogo Propiedades del proyecto.

  3. Elija el Bloquear proyecto para ver casilla.
  4. En el cuadro Contraseña, escriba una contraseña que desea utilizar para proteger la macro.
  5. En el cuadro Confirmar contraseña, escriba la misma contraseña por segunda vez.
  6. Haga clic en Aceptar.

Cierre el Editor de VBA, a continuación, guarde el libro. Con protegido el proyecto de VBA, el usuario puede hacer clic Ctrl + Pausa para detener la macro, pero no será capaz de llegar al código del programa. Ellos sólo podrán elegir entre los botones Continuar o al final, los cuales protegen el código. Como beneficio adicional, este enfoque también restringe el usuario vea su código mediante el uso de opciones de menú, barra de herramientas, o de cinta.

Tal vez el mejor enfoque, sin embargo, es la creación de un gestor de errores que, esencialmente, se hará cargo cada vez que el usuario presiona Esc o Ctrl + Break. El controlador que se ejecuta a continuación, puede preguntar al usuario si realmente quieren dejar de fumar, y luego cerrar de forma correcta si lo hacen. Aquí hay un código de ejemplo que muestra cómo se hace esto:

Sub Looptest ()
Application.EnableCancelKey = xlErrorHandler
On Error GoTo ErrHandler

Dim x como de largo
Dim Y siempre
LContinue Dim como de largo

y = 100000000
Para x = 1 To y Paso 1
Siguiente

Application.EnableCancelKey = xlInterrupt
Exit Sub

ErrHandler:
Si Err.Number = 18 Entonces
lContinue = MsgBox (símbolo: = Format (x / y, "0.0%") & _
"Completo" & vbCrLf & _
"¿Quieres Continuar (SI)?" Y vbCrLf & _
"¿Quieres dejar de fumar? [Click NO]", _
Botones: = vbYesNo)
Si lContinue = vbYes Entonces
Currículum
Más
Application.EnableCancelKey = xlInterrupt
MsgBox ("Programa terminó a su solicitud")
Exit Sub
End If
End If

Application.EnableCancelKey = xlInterrupt
End Sub

Tenga en cuenta que este ejemplo se utiliza el método EnableCancelKey, asignándole el nombre de la etiqueta que debe ser un salto a si la llave se presiona (Esc o Ctrl + Pausa) cancelar. En este caso, ErrHandler se saltó a, y se pregunta al usuario qué hacer. Si el usuario opta por salir, entonces la macro se cierra correctamente.

Observe que el primero que se hace después de la etiqueta ErrHandler es comprobar si la propiedad Número del objeto Err es igual a 18. Si es así, usted sabe que se ha pulsado una tecla de cancelación. Si no, entonces algún otro tipo de error se ha producido, y debe ser manejada de la manera que sea apropiada para su macro.

ExcelTips es su fuente de capacitación rentable Microsoft Excel. Esta punta (3021) se aplica a Microsoft Excel 97, 2000, 2002, y 2003. Usted puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y versiones posteriores) aquí: Anular un Macro y manteniendo el control.