Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Función Now en VBA

| 25 Comments

La función Now obtiene el día y la fecha del momento en el cual se ejecuta el comando.

Dicha información puede mostrarse en pantalla a través de un “cuadro de diálogo”, registrarse en alguna celda de una hoja de cálculo o tan sólo almacenarse en alguna variable.

Para mostrar a través de cuadro de diálogo: MsgBox Now

Para registrarlo en una celda de Excel : Range(“A2”) = Now

También podemos obtener algún parámetro de now (para almacenamiento y posterior operación en alguna variable) tal como el año, mes,  fecha, hora, minutos, etc, a través de los siguientes comandos:

y = Year(Now)

m = Month(Now)

d= Day(Now)

h= Hour(Now)

m= Minute (Now)

Una aplicación posible para la función Now es para un sistema de registro de asistencia. Cada vez que un trabajador llegue a su centro laboral, se hace uso de la función “Now” para obtener la fecha y hora de entrada.  La información se escribe en dos celdas por separado: una indica la fecha y otra celda indica la hora.

Range(“A2”) = DateValue(Now)

Range(“A3”) = TimeValue(Now)

Descargar ejemplo de la función Now

25 Comments

  1. Buenas tardes, esta es otra novedad para mi, obtener la fecha actual (del sistema) a través de la función Now.

    Esta operación
    Range(“A2″) = DateValue(Now)

    normalmente la realizaba de la siguiente manera:
    Range(“A2″) = Date

    Consulta ¿son equivalentes? ¿hay alguna diferencia?

    Tal vez esto explicaría que en algunos equipos capturar la fecha mediante f=Date me daba error y me indicaba que Date no se encontraba dentro de la biblioteca.

    De antemano, agradezco su respuesta y comentarios que tenga a bien alcanzarme.

    Saludos,
    Wilbert Ríos

  2. Esta función me parece interesante para grabar la fecha en la cual estamos ingresando los datos sobre un programa que hayamos creado. Por ejemplo, en mi caso llevamos un daily report de actividades, tanto de horas hombre y horas máquina, por lo que para evitar errores en el reporte, esta función me permitiría ingresar automáticamente la fecha en la cual estoy colocando la data, lo que me evitaría caer en error y a la vez saber exactamente cuando fue la última vez que ingresé un valor y poder, recuperar data que haya sido ingresada anteriormente.

  3. Probé esta macro comentando la última linea del código. Efectivamente en A2 aparece solo la fecha y en A3 la hora.

  4. Excelente función! Lo que yo quisiera saber es de qué manera se podría adaptar esta función para que por ejemplo en el caso que llegue cada uno de los trabajadores a registrarse, salga automáticamente la hora y fecha de cada uno.
    Gracias de antemano por la respuesta.

  5. Esta función me parece muy útil y sobretodo sencilla. especialmente para mi que estoy haciendo mis “pininos” en estos temas. Algo que aprendí es sobre la importancia de escribir las ordenes tal como se muestran, porque inicialmente al probar tuve un error de sintaxis y me rechazaba la macro, generándome una llamada sombreada en un color señalada con una linea, empece a revisar y logre por fin detectar el error.

  6. Bastante útil. No es muy difícil de hacer.

  7. Bastante útli.. la probé asignando la macros a un botón “Check in” para registrar la hora de entrada para una lista de nombres y funcionó bien… es fácil y rápida de usar como comando

  8. Funcion util para registrar la hora y fecha del registro de datos, o actividad que realicemos en excel.

  9. Es una función bastante práctica y muy útil para registrar la fecha y hora en una base de datos. Sobre todo para no perder la información posteriormente, con esto se hace más sencillo tener la data organizada.

  10. He usado la funció Now en macros y obtengo la fecha y hora. Sin embargo estoy tratando de hacer una planilla que muestra a hora con centésimas de segundo.
    He visto que para mostrar dentésimas, debo usar el formato de celdla: hh:mm:ss,00
    Esto opera bien cuando en la celda directamente ingreso la función “now” (es decir, muestra la hora con centésimas de segundo)
    Por ejemplo: 19:01:55,18

    Pero cuando trato de usarla en una macro, asignando el resultado de now a una celda que tiene el formato para mostrat centésimas de segundo, la hora sólo llega hasta los segundos, mostrando siempre “0” en la décima y centésima.
    Por ejemplo:
    18:35:14,00
    18:35:17,00

    Alguien sabe que puede estar pasando y como resolverlo?

    Muchas gracias

  11. Buenas Noches:

    Esta función sería muy útil si se aplica para controlar el ingreso y/o salida de mercadería a los almacenes de cualquier empresa. Tengo una consulta: Existe diferencia entre la función Now y la función Date?

    Saludos

    • Hola Alvaro, sí existe diferencia. La función Now devuelve la fecha y hora del servidor juntas (Ej: 22/12/03 10:24:23) y la función Date devuelve la fecha del servidor con formato mes, dia y año (Ej: 22/12/03).

      Espero haber contestado a tu pregunta!

  12. Función muy útil y sencilla, se me ocurre que su uso estaría en la logística de almacenes para el control del ingreso y salida de mercadería, control de la puntualidad y asistencia a un centro de estudios o trabajo, entre otros. Consulta: si defino medir la fecha y hora para varios eventos que están en celdas diferentes: podría ser por ejemplo así:

    Range(“A2”) = DateValue(Now)
    Range(“A3”) = TimeValue(Now)
    Range(“A4”) = DateValue(Now)
    Range(“A5”) = TimeValue(Now)

    Me pregunto, sólo le asigno “now” a la primera, así?
    Range(“A2”) = Now

  13. Interesante ejemplo

  14. Es buena la funcion pero hat macros mas simples para las que solo necesito la fecha en formato short date.

    cuando hago una busqueda por medio de Find y pongo la fecha en una variable, la toma con minutos y segundos del momento en que hafgo la busqueda por ende no encuentra concidencias en la busqueda por el formato que le asigna la funcion Now DD/mm/YYY 00::00:00.

    hay alguna manera de incorporar la funcion date para que mi macro funcione como la tenia anteriormente, de lo contrario tendre que cambiarlo en la variable por medio de formato short date pero no lo he logrado hasta el momento.

    alguna idea?

  15. NOTA: la funcion es MINUTE(now) sin la “S”

    • Gracias Wilson
      Fue un error de digitación, se aprovecho la correción para colocar enlaces a ejemplos relacionados.
      Saludos

  16. No se si se pueda hace en visual basic en excel. ocupo evaluar una funcion en tiempo real ( x=f(t) ) y que el tiempo varie cada .02 segundos, no he encontrado de usar Timer para que empiece en cero, varie hasta el tiempo final, y me muestre el valor de t y de x .

    • Quizá algo como:

      Application.Wait(Now + #0:00:01#)

      Sleep (1000) ‘ 1 segundo

      Te pueda servir para realizar lo que requieres.

      Saludos

  17. Hola,

    Yo tengo una duda con el codigo, si solo quiero que me grabe la fecha es decir en este formato dd/mm/yyyy; cual seria la instruccion ya que ami no me interesan las horas solo fechas para realizar mejor los filtro.

    Gracias de antemano.

  18. Hola Fernando

    Para armar una fecha puedes usar dateserial, y el contenido obtenido en la celda debe estar previamente formateado con el formato que necesitas, o usar una rutina posterior que coloque el formato adecuado.
    http://www.excel-avanzado.com/7231/funcion-dateserial-en-vba.html

    Saludos

  19. Excelente función que se puede utilizar tanto en la Hoja de excel como en la función VBA, que ayuda a organizar los tiempos y los momentos en los cuales sale o ingresa las mercaderías y/o inventarios dentro de una empresa. Muy importante para el área de logística.

  20. Quisiera saber si esta funcion en combinacion con cual pudiera mostrar ademas de la hora y fecha, las horas que va acumulando el trabjador durante el mes. Gracias

  21. Holas.- Intento usar la función now para registrar el tiempo pero solo para la primera vez que se escriba algo en el rango especificado de celdas.
    Hasta ahora he logrado registrar el tiempo pero para cada vez que hay un cambio en la hoja, pero necesito ayuda para que sea solo la primera modificación dentro del rango.
    Esto es lo que tengo hasta ahora, que me falta?. Gracias.
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range(“D5:D104”)) Is Nothing Then
    Exit Sub
    Else
    Sheets(“Tiempo”).Range(“C3”) = TimeValue(Now)
    End If
    End Sub

  22. Fernando para hacer lo que quieres tienes que poner:
    Range(“A2”) = Format(Now, “dd/mm/yyyy”)

Deja un comentario

Required fields are marked *.


Excel Avanzado located at , Lima, Perú . Reviewed by usuarios rated: 4.7 / 5