Cómo utilizar eventos ontime y eventos de pulsación en excel 2016 vba

Hay dos tipos de eventos que se pueden utilizar en la programación de VBA para Excel 2016 que no están asociados con objetos: el tiempo y pulsaciones de teclas. Porque el tiempo y pulsaciones de teclas no están asociados con un objeto particular, como un libro o una hoja de cálculo, programar estos eventos en un módulo normal de VBA.

Video: Curso VBA Excel Eventos I Vídeo 37

El evento OnTime

El evento OnTime se produce cuando se produce un momento determinado del día. El siguiente ejemplo muestra cómo obtener Excel para ejecutar un procedimiento cuando se produce el evento 3 p.m.. En este caso, una voz de robot le dice a despertar, acompañado de un cuadro de mensaje:

Sub SetAlarm () Application.OnTime 0.625, “DisplayAlarm” End subsub DisplayAlarm () Application.Speech.Speak ( “Hey, despierta”) MsgBox “Es la hora de su descanso de la tarde!” End Sub

En este ejemplo, se utiliza el método OnTime del objeto de aplicación. Este método toma dos argumentos: el tiempo (0.625 o 15:00) y el nombre del procedimiento Sub a ejecutar cuando se produce el evento de tiempo (DisplayAlarm).

Este procedimiento es muy útil si usted tiende a tan envueltos en su trabajo que se olvida de reuniones y citas. Sólo hay que establecer un evento de OnTime para recordar.

La mayoría de las personas les resulta difícil pensar en el tiempo en términos del sistema de numeración de Excel. Por lo tanto, es posible que desee utilizar la función de VBA TimeValue para representar el tiempo. TimeValue convierte una cadena que se parece a la vez en un valor que Excel puede manejar. La siguiente declaración muestra una forma más fácil de programar un evento de 3 p.m .:

Application.OnTime TimeValue ( “3:00:00 PM”), “DisplayAlarm”

Si desea programar un evento en relación con la hora actual (por ejemplo, 20 minutos a partir de ahora), se puede utilizar una sentencia como esta:

Video: CommandButton MouseMove Excel VBA 2016

Application.OnTime ahora + TimeValue ( “00:20:00”), “DisplayAlarm”

También puede utilizar el método de OnTime para ejecutar un procedimiento de VBA en un día en particular. Debe asegurarse de que el equipo sigue funcionando y que el libro con el procedimiento se mantiene abierta. La siguiente declaración se ejecuta el procedimiento DisplayAlarm a 5 p.m. el 31 de diciembre 2016:

Video: Curso VBA Excel Eventos II Vídeo 38

Application.OnTime DateValue ( “31/12/2016 17:00”), “DisplayAlarm”

Esta línea de código en particular podría ser útil para avisarle de que tiene que ir a casa y estar listo para las fiestas de Fin de Año Nuevo.

Video: 21curso excel vba 2016: eventos boton

He aquí otro ejemplo que utiliza el evento OnTime. La ejecución de los procedimientos UpdateClock escribe la hora a la celda A1 y programas también otro evento de cinco segundos después. Este evento vuelve a ejecutar el procedimiento UpdateClock. El efecto neto es que la celda A1 se actualiza con la hora actual, cada cinco segundos. Para detener los acontecimientos, ejecute el procedimiento cronómetro (que cancela el evento). Tenga en cuenta que NextTick es una variable de nivel de módulo que almacena el tiempo para el próximo evento.

Dim NextTick Como DateSub UpdateClock () `A1 celular actualizaciones con las actuales timeThisWorkbook.Sheets (1) .Range ( ‘A1’) = Tiempo` creado en el próximo evento de cinco segundos nowNextTick = ahora + TimeValue ( “00:00:05 “) Application.OnTime NextTick,‘UpdateClock’End subsub cronómetro ()` Cancela el evento OnTime (para el reloj) On Error Resume NextApplication.OnTime NextTick,‘UpdateClock’,, FalseEnd Sub

El evento OnTime persiste incluso después de que se cierra el libro. En otras palabras, si cierra el libro sin ejecutar el procedimiento cronómetro, el libro volverá a abrir en sí en cinco segundos (suponiendo que Excel todavía se está ejecutando). Para evitar esto, utilice un procedimiento de evento Workbook_BeforeClose que contiene la siguiente declaración:

llamar cronómetro

El método OnTime tiene dos argumentos adicionales. Si va a utilizar este método, debe referirse al sistema de ayuda para más detalles.

Si desea ver una aplicación bastante complicado, echa un vistazo a esta aplicación de reloj analógico. La esfera del reloj es en realidad un gráfico y la tabla se actualiza cada segundo para mostrar la hora del día. Inútil, pero divertido.

Una aplicación analógica-reloj.
Una aplicación analógica-reloj.

eventos de pulsación

Mientras trabaja, Excel supervisa constantemente lo que escribe. Debido a esto, puede establecer las cosas para que una tecla o una combinación de teclas ejecuta un procedimiento.

Aquí hay un ejemplo que vuelve a asignar las teclas AvPág y RePág:

Sub Setup_OnKey () Application.OnKey “AvPág {}”, “PgDn_Sub” Application.OnKey “{} Re Pág”, “PgUp_Sub” End subsub PgDn_Sub () On Error Resume NextActiveCell.Offset (1, 0) .ActivateEnd subsub PgUp_Sub () On Error Resume NextActiveCell.Offset (-1, 0) Sub .ActivateEnd

Después de configurar los eventos OnKey mediante la ejecución del procedimiento de Setup_OnKey, presionando AvPág se mueve una fila hacia abajo. Al pulsar RePág se mueve una fila hacia arriba.

Observe que los códigos clave se incluyen entre llaves, no están entre paréntesis. Para obtener una lista completa de los códigos de teclado, consulte el sistema de ayuda. Buscar OnKey.

En este ejemplo, On Error Resume Next se utiliza para ignorar los errores que se generan. Por ejemplo, si la celda activa está en la primera fila, tratando de mover una fila hacia arriba provoca un error que con seguridad se puede ignorar. Y si una hoja de gráficos está activa, no hay ninguna celda activa.

Mediante la ejecución de la siguiente rutina, cancela los eventos OnKey:

Sub Cancel_OnKey () Application.OnKey “AvPág {}” Application.OnKey “Re Pág {}” End Sub

Usando una cadena vacía como el segundo argumento para el método OnKey hace no cancelar el evento OnKey. Por el contrario, hace que Excel simplemente ignorar la pulsación de tecla. Por ejemplo, la siguiente declaración le dice a Excel para ignorar Alt + F4. El signo de porcentaje representa la tecla Alt:

 Application.OnKey “% {F4}”, “”

Aunque se puede utilizar el método OnKey para asignar una tecla de acceso directo para ejecutar una macro, se debe utilizar el cuadro de diálogo Opciones de la macro para esta tarea.

Si cierra el libro que contiene el código y salir de Excel abiertos, el método OnKey no se restablecerá. Como consecuencia de ello, al pulsar la tecla de acceso directo hará que Excel para abrir automáticamente el archivo con la macro. Para evitar que esto suceda, debe incluir el código en el código de evento Workbook_BeforeClose para restablecer el evento OnKey.

Artículos Relacionados