Insertar sello de fecha y hora con VBA

Anonim

Insertar fecha y hora en Excel usando VBA es tan simple como escribir una fórmula en una celda.

El código de marca de tiempo de VBA es:

Rango ("A1"). Valor = Formato (ahora, "mm / dd / aaaa HH: mm: ss")

Este código mostrará la fecha y hora actuales en la celda A1. Y sí, eso es todo. se hace.

La función "Ahora" devuelve la fecha y hora actuales, y la función "Formato" formatea la salida en formato "mm / dd / aaaa HH: mm: ss".

Muestre la fecha y la hora cada vez que se realiza un cambio usando VBA.

Digamos que ha preparado una hoja. En esta hoja, desea que se muestre el tiempo en la columna B siempre que alguien ingrese la Columna A.

Ahora necesitamos un código de marca de tiempo VBA que se ejecute cada vez que se realice un cambio en la columna A.

El siguiente código hace el trabajo fácilmente.

Ejecutar macro cuando se realiza un cambio (controlador de eventos de cambio de hoja de trabajo)

Private Sub Worksheet_Change (ByVal Target As Range) If Not Intersect (Target, Range ("A: A")) No es nada ThenOn Error Continuar siguiente If Target.Value = "" ThenTarget.Offset (0, 1) = "" Else Target .Offset (0, 1) .Value = Formato (ahora, "mm / dd / aaaa HH: mm: ss") End If End If End Sub 

Para ejecutar este código, abra VBA y haga doble clic en la hoja en la ventana del proyecto en la que desea mostrar la marca de tiempo.

Ahora tenemos que usar el controlador de eventos VBA, ya que queremos ejecutar nuestro código para que se ejecute cada vez que se realice un cambio.

En el menú desplegable sobre su código, seleccione Hoja de trabajo.

Ahora, junto al menú desplegable de la hoja de trabajo, verá otro menú desplegable. Contiene muchos controladores de eventos. Por ahora, seleccione "cambiar".

Ahora copie el código anterior aquí.

Y esta hecho. Vuelve a tu hoja y compruébalo.

Explicación del código:

    • El código se escribe en sheet1 haciendo doble clic en él. Significa que su código pertenece solo a esta hoja.
    • Usamos el controlador de eventos "Cambiar" de la "Hoja de trabajo" para activar nuestro Código VBA.
    • Private Sub Worksheet_Change (ByVal Target As Range)

      Este es el nombre de subrutina fijo y predeterminado de un controlador de eventos de cambio.

    • Queremos que nuestro código para ejecutar el cambio se realiza solo en la columna A.
    • Si no se cruza (objetivo, rango ("A: A")) no es nada, entonces

      Esta línea verifica si la celda modificada está en la columna A o no.

    • Ahora, si la línea anterior devuelve True, entonces estas líneas se ejecutan
En caso de error Reanudar siguiente Si Target.Value = "" ThenTarget.Offset (0, 1) = "" ElseTarget.Offset (0, 1) .Value = Format (Ahora, "mm / dd / aaaa HH: mm: ss")

La primera línea ignora la ventana emergente de error y ejecuta estas dos líneas. Si omite On Error reanudar siguiente verá aparecer un error cuando elimine un valor en la columna A.

Si Target.Value = "" Entonces

: - Esta línea comprueba si una celda de la columna A está en blanco. Si es así, entonces

Target.Offset (0, 1) = ""

: - Esta línea elimina el valor de la celda adyacente.

Y si es falso

 Else Target.Offset (0, 1) .Value = Format (Now, "mm / dd / aaaa HH: mm: ss")

: - Esta línea ingresa la hora y fecha actuales junto a la columna A.

  • Y las últimas tres líneas simplemente cierran su bloque respectivo. Y esta hecho. Ahora tiene una hoja que da una hora exacta del cambio realizado en una celda de la columna A.

Es posible que haya notado que hay varios controladores de eventos en la lista desplegable. Juega con ellos. Intente averiguar qué funciona cada controlador de eventos. Y si tienes alguna dificultad, escríbela en la sección de comentarios.

Insertar sello de fecha y hora con VBA