Supongamos que tengo un botón incrustado en mi hoja de cálculo que inicia alguna función de VBA.¿Cómo detener la ejecución del código VBA?
Private Sub CommandButton1_Click()
SomeVBASub
End Sub
Private Sub SomeVBASub
DoStuff
DoAnotherStuff
AndFinallyDothis
End Sub
me gustaría tener la oportunidad de tener algún tipo de un botón "cancelar" que pararía SomeVBASub
ejecución en un momento arbitrario, y no estoy en la participación de Ctrl+Break
aquí, porque yo había me gusta hacerlo silenciosamente
Supongo que este debería ser un problema bastante común, ¿alguna idea?
Gracias.
tuve una idea para implementar este tipo de lógica, pero bastante me embarasses poner 'DoEvents-Check flag' chain en CADA posible punto de salida del procedimiento (literalmente, después de casi cada cadena). –
El método @Fahemita que se describe a continuación lo evita, pero funciona prácticamente igual que Ctrl + Break. Depende de cuánto control desee sobre la interfaz de usuario (p.un botón) y donde puede permitir que su código salga. Si la IU no es importante y el código sale puede ser arbitrario (por ejemplo, no hay problemas con dependencias, retrocesos, etc.), entonces sería más fácil. Por lo general, agregar trampas para un indicador de cancelación no es demasiado engorroso, ya que la mayor parte del tiempo de ejecución se usaría en bucles, pero tal vez ese no sea el caso en su situación. –
Permítanme también agregar que si le preocupa que el procedimiento no se detenga inmediatamente cuando hacen clic en "cancelar" (de ahí la necesidad de que agregue tantas comprobaciones), lo que hago normalmente es deshabilitar el botón Cancelar y cambiar el texto a "Espere ..." o algo en el procedimiento Click, para que el usuario sepa que la aplicación realmente está considerando su solicitud. –