Tabla de contenido:
- El evento OnTime
- Mientras trabaja, Excel monitorea constantemente lo que escribe. Debido a esto, puede configurar las cosas para que una combinación de teclas y teclas ejecute un procedimiento.
Video: enter vba in excell 2024
Hay dos tipos de eventos que puede usar en la programación de VBA para Excel 2016 que no están asociados con objetos: tiempo y presionar teclas. Debido a que el tiempo y las pulsaciones de teclas no están asociados con un objeto en particular, como un libro de trabajo o una hoja de trabajo, usted programa estos eventos en un módulo VBA normal.
El evento OnTime
El evento OnTime ocurre cuando ocurre una hora del día en particular. El siguiente ejemplo muestra cómo hacer que Excel ejecute un procedimiento cuando el 3 p. metro. evento ocurre. En este caso, una voz de robot te pide que te despiertes, acompañado de un cuadro de mensaje:
Aplicación Sub SetAlarm (). OnTime 0. 625, "DisplayAlarm" End Sub Sub DisplayAlarm () Aplicación. Habla. Habla ("Oye, despiértate") MsgBox "¡Es hora de que pases la tarde! "End Sub
En este ejemplo, se usa el método OnTime del objeto Application. Este método toma dos argumentos: el tiempo (0. 625 o 3: 00 p. M.) Y el nombre del procedimiento Sub para ejecutar cuando se produce el evento de tiempo (DisplayAlarm).
Este procedimiento es bastante útil si tiende a estar tan involucrado en su trabajo que se olvida de las reuniones y citas. Simplemente configure un evento OnTime para recordarse a sí mismo.
A la mayoría de las personas les resulta difícil pensar en el tiempo en términos del sistema de numeración Excel. Por lo tanto, es posible que desee utilizar la función VBA TimeValue para representar la hora. TimeValue convierte una cadena que parece un tiempo en un valor que Excel puede manejar. La siguiente declaración muestra una forma más fácil de programar un evento para 3 p. metro.:
Aplicación. OnTime TimeValue ("3: 00: 00 pm"), "DisplayAlarm"
Si desea programar un evento relativo a la hora actual (por ejemplo, dentro de 20 minutos), puede usar una declaración como esta: < Solicitud. OnTime Now + TimeValue ("00: 20: 00"), "DisplayAlarm"
También puede usar el método OnTime para ejecutar un procedimiento de VBA en un día en particular. Debe asegurarse de que su computadora siga funcionando y que el libro de trabajo con el procedimiento se mantenga abierto. La siguiente instrucción ejecuta el procedimiento DisplayAlarm en 5 p. metro. el 31 de diciembre de 2016:
Solicitud. OnTime DateValue ("31/12/2016 5: 00 pm"), "DisplayAlarm"
Esta línea de código particular podría ser útil para advertirle que debe irse a casa y prepararse para las festividades de Nochevieja.
Aquí hay otro ejemplo que usa el evento OnTime. La ejecución de los procedimientos de UpdateClock escribe la hora en la celda A1 y también programa otro evento 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 eventos, ejecute el procedimiento StopClock (que cancela el evento). Tenga en cuenta que NextTick es una variable a nivel de módulo que almacena la hora para el próximo evento.
Dim NextTick As Date Sub UpdateClock () 'Actualiza la celda A1 con la hora actual ThisWorkbook. Hojas (1). Rango ("A1") = Tiempo 'Configure el siguiente evento en cinco segundos a partir de ahora NextTick = Now + TimeValue ("00: 00: 05") Aplicación. OnTime NextTick, "UpdateClock" End Sub Sub StopClock () 'Cancela el evento OnTime (detiene el reloj) En caso de error, reanuda la siguiente aplicación. OnTime NextTick, "UpdateClock", False End Sub
El evento de OnTime persiste incluso después de que el libro de trabajo está cerrado. En otras palabras, si cierra el libro de trabajo sin ejecutar el procedimiento StopClock, el libro de trabajo se volverá a abrir en cinco segundos (suponiendo que Excel aún se esté ejecutando). Para evitar esto, utilice un procedimiento de evento Workbook_BeforeClose que contenga la siguiente instrucción:
Call StopClock
El método OnTime tiene dos argumentos adicionales. Si planea usar este método, debe consultar el sistema de Ayuda para obtener detalles completos.
Si desea ver una aplicación bastante complicada, consulte esta aplicación de reloj analógico. La esfera del reloj es en realidad una tabla, y la tabla se actualiza cada segundo para mostrar la hora del día. Inútil, pero divertido.
Una aplicación de reloj analógico.
Eventos de pulsación de teclaMientras trabaja, Excel monitorea constantemente lo que escribe. Debido a esto, puede configurar las cosas para que una combinación de teclas y teclas ejecute un procedimiento.
Aquí hay un ejemplo que reasigna las teclas PgDn y PgUp:
Aplicación Sub Setup_OnKey (). Aplicación OnKey "{PgDn}", "PgDn_Sub". OnKey "{PgUp}", "PgUp_Sub" End Sub Sub PgDn_Sub () On Error Resume Next ActiveCell. Desplazamiento (1, 0). Activar End Sub Sub PgUp_Sub () On Error Resume Next ActiveCell. Desplazamiento (-1, 0). Activar End Sub
Después de configurar los eventos OnKey ejecutando el procedimiento Setup_OnKey, presionar PgDn lo mueve hacia abajo una fila. Al presionar RePág sube una fila.
Observe que los códigos de las teclas están entre llaves, no entre paréntesis. Para obtener una lista completa de códigos de teclado, consulte el sistema de Ayuda. Busque
OnKey. En este ejemplo, On Error Resume Next se usa para ignorar cualquier error que se genere. Por ejemplo, si la celda activa está en la primera fila, al intentar avanzar una fila se produce un error que puede ignorarse de manera segura. Y si una hoja de gráfico está activa, no hay una celda activa.
Al ejecutar la siguiente rutina, cancela los eventos de OnKey:
Solicitud de Sub Cancelar_OnKey (). Aplicación OnKey "{PgDn}". OnKey "{PgUp}" End Sub
El uso de una cadena vacía como segundo argumento para el método OnKey hace que
no cancele el evento OnKey. Por el contrario, hace que Excel simplemente ignore la pulsación de tecla. Por ejemplo, la siguiente instrucción le dice a Excel que ignore Alt + F4. El signo de porcentaje representa la tecla Alt: Aplicación.OnKey "% {F4}", ""
Aunque puede usar el método OnKey para asignar una tecla de método abreviado para ejecutar una macro, debe usar el cuadro de diálogo Opciones de macro para esta tarea.
Si cierra el libro que contiene el código y deja Excel abierto, el método OnKey no se restablecerá. Como consecuencia, al presionar la tecla de método abreviado, Excel abrirá automáticamente el archivo con la macro. Para evitar que esto suceda, debe incluir código en su código de evento Workbook_BeforeClose para restablecer el evento OnKey.