Hay media docena de respuestas a esto. "Abrir una segunda instancia" "Tener una pausa" Etc. No estoy buscando eso.

Estoy buscando al usuario del libro de trabajo para poder manipular el libro de trabajo mientras se ejecuta la macro. He visto esto funcionando antes, donde el usuario podía desplazarse, cambiar pestañas, incluso agregar y eliminar datos, todo mientras la macro se estaba ejecutando. Desafortunadamente, no pude obtener permiso para mirar el código (y cometer infracciones de CFAA no es mi taza de té), así que no tengo idea de cómo lo hicieron.

¿Cómo puede permitir que un usuario edite el libro mientras se ejecutan las macros? Para un ejemplo específico, tengo funcionando el Juego de la vida de Conway. Los usuarios seleccionan celdas para voltear en vivo / muerto, luego pueden ejecutar una macro para ejecutar todo. Creo que sería bueno para los usuarios poder cambiar las celdas mientras se ejecuta la macro. (que es un segundo en macro seleccionada)

Gracias

0
Selkie 15 ene. 2018 a las 06:18

3 respuestas

La mejor respuesta

Lo siento, solo relee la pregunta. No esperaría que la permutación se ejecute por mucho tiempo, no lo suficiente como para interrumpir realmente.

Pero si lo hace, entonces el consejo sobre el uso de muchos DoEvents es válido.

La otra opción es que puede usar el evento OnTime para tener un "latido"

Estilo VBA Macro On Timer para ejecutar código cada número de segundos establecido, es decir, 120 segundos

Puede configurar el temporizador para decir 3 segundos. Cada vez que ocurre el evento OnTime, realiza un paso de su permutación. En los tres segundos intermedios pueden editar.

1
Nick.McDermaid 15 ene. 2018 a las 23:20

Una forma de hacer esto es utilizar una forma de usuario sin modo (UserForm.Show vbModeless)

El formulario de usuario permanece visible pero el VBA deja de ejecutarse cuando se muestra el formulario y el usuario puede interactuar con Excel. Luego, cuando el usuario hace clic en un botón del formulario, el código detrás del botón comienza a ejecutarse nuevamente.

Entonces, en realidad, el usuario está interactuando con Excel o interactuando con el formulario ...

0
Charles Williams 15 ene. 2018 a las 16:31

Refactorice su macro para usar Eventos. En ese caso, tendría una serie de controladores de eventos (en lugar de una macro monolítica) para responder a varios desencadenantes. Esto supone que la macro está influenciada por lo que el usuario está haciendo en la hoja de trabajo.

1
AJD 15 ene. 2018 a las 06:12