Compartir a través de


Permitir interrupciones de usuarios en operaciones largas

Hace referencia a: Excel 2013 | Office 2013 | Visual Studio

Aunque Windows usa la multitarea preventiva, donde las funciones o los comandos pueden tardar mucho tiempo en ejecutarse, es recomendable dedicar algún tiempo al sistema operativo de vez en cuando para ayudarle a programar tareas simultáneas. Con las llamadas nativas de Windows, puede hacerlo mediante la función de suspensión. Con la API de C, puede hacerlo mediante la función xlAbort, que no solo produce el procesador durante un instante, sino que también comprueba si el usuario ha presionado la tecla de cancelación, ESC.

Por lo tanto, la función xlAbort permite que el código compruebe si el usuario quiere finalizar el proceso, realizar la limpieza necesaria y, a continuación, devolver el control a Excel. La función también permite borrar la condición de interrupción. Esto permite que los comandos muestren un cuadro de diálogo para comprobar si el usuario quiere finalizar el comando. Si el usuario no quiere finalizar el comando, al llamar a la función xlAbort con el argumento FALSE se borra el salto. (El argumento predeterminado es TRUE , que simplemente comprueba la condición pero no la borra).

Puede llamar a la función xlAbort desde una función definida por el usuario (UDF) o desde un comando XLL. En una UDF, cuando la función xlAbort devuelve TRUE, después de haber detectado un salto de usuario, normalmente cortaría el cálculo de la función y devolvería algún valor para indicar que el cálculo no se completó, quizás un error o cero. No borraría la condición de interrupción para que otras instancias de funciones largas que también comprueben esta condición también se interrumpan. Excel borra implícitamente esta condición cuando finaliza una actualización.

Cuando detecta una condición de interrupción en un comando, normalmente borra la condición llamando de nuevo a la función xlAbort con el argumento FALSE, aunque Excel borra implícitamente esta condición cuando finaliza un comando.

Vea también

Funciones de la API de C que se pueden llamar solo desde una DLL o XLL
Actualización multiproceso en Excel
Desarrollo de XLL de Excel de 2013
Obtener acceso a la instancia de Excel y los controladores de la ventana principal