Hoy os presento una utilidad para poner la hora en una celda cualquiera de nuestra hoja de cálculo. En el ejemplo que veréis a continuación, la hora saldrá en la celda A1.
Tan solo tendremos que copiar y pegar este código en un módulo VBA, y ejecutarlo:
Sub reloj() 'Mostramos la hora ActiveSheet.Range("A1") = Format(Now, "hh:mm:ss") Application.OnTime (Now + TimeSerial(0, 0, 1)), "reloj" End Sub |
60 comentarios:
Javier, antes que nada felicitarte por tu blog, es una herrmienta muy util para muchos de nosotros.
Me tomo la libertad de hacerte una consulta, necesito calcular el periodo de tiempo transcurrido desde una fecha a otra expresado con Años, Meses y dias, lo mas exacto posible, ¿que me sugieres?
Gracias por tu comentario Ernesto.
Si me lo permites, en una próxima entrega hablaré de esto que me planteas, pero no podrá ser hasta el próximo martes, ya que durante esta Semana Santa no estaré disponible (lunes incluído).
Espero que puedas esperar unos días :-)
Un saludo.
Saludos: Solo quiero saber como puedo poner la hora y fecha en una celda sin que esta cambie cada vez que introduzco un valor a otra celda, por ejemplo en celda A1 tengo Fecha y en celda A2 y A3 Aceptado y Rechazado esta es mi formula =IF(B2="x",NOW(),IF(C2="x",NOW())) que me falta, agradecere tu valioso apoyo, por favor mandame tu respuesta a nec_olv@hotmail.com
HOLA,
SOY NUEVO MANEJANDO EXCEL
Y QUISIERA SABER CUAL ES LA FORMULA PARA PONER LA HORA ACTUAL DE MI SISTEMA EN UNA CELDA DE LA HOJA DE CALCULO, COMO LO HACE LA FORMULA =HOY().
SALUDOS
Prueba con esto:
=AHORA()
Luego le das a la celda, formato fe hora (Formato --> Celdas... --> Pestaña número --> Seleccionas la categoría hora, y cualquiera de los formatos que allí verás).
Un saludo.
Hola hermano: gracias por los datos, pero nomas no me salen. Digo, pongo la hora en la celda =AHORA(), pero hasta que no modifique algo en la hoja, esta hora no se mueve. Hay opcion de que siga tal cual reloj sin hacer nada en una celda?, quiero que siga corriendo el tiempo, no que se congele, hasta que ponga un nuevo dato en otra celda o lo cierre. Gracias
Hola Daniel.
Precisamente el macro que se explica en este artículo, hace exactamente eso que pides.
Saludos.
Javier, esta macro tiene lo correcto. Gracias!
Pero todavia tengo una duda, como puedo hacer que para que se active un formulario de excel, cuando sean las 08:00 a.m. ???
Trato de igualar la hora pero no me sale.
Estoy poniendo este codigo en el Thiswoork. (corrigeme si me equivoco por favor)
Private Sub Workbook_Open()
Call reloj
Range("a1").Select
If ActiveCell.Offset(0, 0).Value = 10:24:20 p.m. Then
Frm_CreditosGeneral.Show
End If
End Sub
Aqui llamo a tu macro "reloj" para que empieze a correr la hora y, en cierta hora que se active el formulario, pero no me salio
Prueba esto:
Sub Auto_open()
'Al abrir el fichero, controlamos la hora,
'y cuando den las 8:00 am, que se ejecute el macro
'llamado "mi_despertador"
Application.OnTime TimeValue("19:58:00"), "mi_despertador"
End Sub
Y luego añade este otro macro:
Sub mi_despertador()
MsgBox ("Son las " & Time & " en punto. A ver si te depiertas ya!.")
End Sub
Al macro Auto_open no le cambies nombre. Se ejecutará al abrir el fichero de excel.
Cuando abras el fichero, se pondrá en marcha el reloj, y al dar las 8:00 am, se ejecutará el macro que he llamado "mi_despertador".
Saludos.
trabajo como copiador de datos, y pierdo muchop tiempo poniendo los dos puntos (:) entre numeros de formato horario en excel
existe alguna forma de poner 123456 y que se combierta en 12:34:56 automaticamente??me ahorraria muchisimo tiempo,
gracias
Puedes hacerlo de una forma muy sencilla. Seleccionas la celda o rango de celdas (grupo de celdas), te vas a Formato ---> Celdas, y seleccionas en la pestaña Número, la categoría Personalizada, y pones esto:
00":"00":"00
De esa forma, cuando escribas un nº de 6 caracteres, te los separará en grupos de 2 dígitos, intercalando los dos puntos entre cada grupo.
De nada :-)
Exclente gracias por la ayuda
Estimado amigo muy buenos dias
mi nombre es Felipe y escribo desde Chile encontre este blog atravez de google y lo encontre exelente.Todo se inicio porque necesitaba poner la hora en una celda excel y lo logre, el problema es el siguiente:
al bloquear la hora con el siguiente codigo:
Sub reloj()
Application.ScreenUpdating = False
ActiveSheet.Unprotect "xxx"
ActiveSheet.Range("A1") = Format(Now, "hh:mm:ss")
Application.OnTime (Now + TimeSerial(0, 0, 1)), "reloj"
Application.ScreenUpdating = True
ActiveSheet.Protect "xxx"
End Sub
funciona todo perfecto pero al cambiar los segundos la pantalla destella y es un poco molesto, mi duda es se puede poner el reloj pero sin que corrar los segundos??? para que destelle la pantalla solo cada 1 minuto y no cada 1 segundo???
es bastante extraña la pregunta pero si anotas el codigo en el editor y la accionas te daras cuenta de lo me refiero...
agradezco tu respuesta saludos cordiales...
Cambia la línea esta:
Application.OnTime (Now + TimeSerial(0, 0, 1)), "reloj"
Por esta otra:
Application.OnTime (Now + TimeSerial(0, 1, 0)), "reloj"
De esa forma se te actualizará cada minuto. Si quierse cada 15 segundos, sería así:
Application.OnTime (Now + TimeSerial(0, 0, 15)), "reloj"
TimeSerial tiene este formato:
TimeSerial(horas, minutos, segundos)
Saludos.
HOLA A TODOS VEO QUE AQUI HAY PERSONAS QUE SI SABEN DE EXCEL Y NECESITO DE SU AYUDA .
QUIERO QUE EN UNA CELDA QUE TENGO UN NOMBRE DESPUES DE LAS 10:00 AM SE ME PONGA EN COLOR ROJO.
SERA QUE ME PUEDEN AYUDAR GRACIAS
Necesitarás estos 2 macros:
Sub Auto_open()
'Lanzamos el macro al abrir el fichero
Application.OnTime TimeValue("10:00:00"), "poner_color"
End Sub
Sub poner_color()
'seleccionamos la celda a
'cambiar el color
Range("A4").Select
'ponemos el dato en rojo
Selection.Font.ColorIndex = 3
End Sub
Si no sabes donde incluir esos macros, mírate el artículo sobre cómo hacer macros
Saludos.
hola gracias por sus aportes
necesito un favor quiero crear un nuevo documento excel con un nombre deterninado como hago
segundo quiero abrir un documento de excel como lo hago
gracias
Perdon, no tilde la opcion de hacer seguimiento por correo.
=)
Bueno y evidentemente no llego mi mensaje anterior...
Te consultaba para ver si habia alguna manera de sumarle 5hs. a la macro, ya que por razones laborales trabajo con la hora de España (GMT +2)y no con la Argentina (GMT -3)
Por ahora lo soluciono cambiando la hora del sistema.
Muchisimas gracias.
Nuevamente con una consulta sobre esta macro tal cual esta.
Tengo 3 problemas:
La macro esta guardada en el libro del documento en donde la uso (no en el PERSONAL) La uso para que el reloj me lo muestre en E16 y la llamo a traves de un Boton de Comando.
Problema N°1: en cada libro que abro (nuevo o uno guardado) me aparece en E16 el reloj y en todas las hojas...
Problema N°2: no puedo deshacer ninguna accion. Digamos que el control Deshacer (control+z) esta deshabilitado siempre.
Problema N°3: no puedo cerrar el libro donde esta la macro corriendo, tengo que cerrar el Excel por completo para poder hacerlo. Al querer cerrar el libro, este, se quiere abrir nuevamente pidiendome si quiero guardar los cambios.
Se me ocurre que esto se solucionaria con algo que detenga el reloj.
Muchas gracias y perdon por las molestias.
Es normal que te escriba eso en todas las hojas de todos los libros, porque en el código fuente, como verás, te aparece la propiedad ActiveSheet, que traducido quiere decir, la hoja activa. Es decir, a cada segundo, se irá mostrando la hora, ...fíjate en el TimeSerial(0, 0, 1), en la hoaj activa, es decir, en la hoja del libro que tengas en primer plano.
Para solucionarlo, puedes optar por llamar al libro que quieras que contenga ese macro, por ejemplo de esta forma (suponiendo que el libro se llama Libro2, y quieres que la hora salga en la Hoja1):
Sub reloj()
'Mostramos la hora
Workbooks("Libro2.xls").Activate
Sheets("Hoja1").Select
Range("A1") = Format(Now, "hh:mm:ss")
Application.OnTime (Now + TimeSerial(0, 0, 1)), "reloj"
End Sub
Ojo, que de esa forma, lo que harás es anteponer o poner en primer plano, y a cada segundo, el Libro2.xls (que debe estar previamente guardado, para que funcione todo correctamente).
SI lo que quieres es parar el relojito, puedes probar este sencillo macro:
Sub parar_reloj()
'paramos el macro llamado "reloj"
Application.OnTime EarliestTime:=TimeValue(Now + TimeSerial(0, 0, 1)), Procedure:="reloj", Schedule:=False
End Sub
Espero que te sirva. Saludos.
Hola Javier.
Si me sirvio y anda perfecto!!!
Muchisimas gracias por tus aportes!
Perdon nuevamente.
Me olvide de comentarte.
La macro funciona genial, pero el boton de PARAR que me pusiste no funciona si yo quiero poner la macro de RELOJ en minutos.
Osea el TimeSerial (0,1,0)
Probe todas las combinaciones y no logro hacerlo funcionar.
Y otra cosa, habra alguna manera de a esta macro sumarle 5 horas por defecto?
Por ejemplo, si en mi reloj del sistema son las 14:00 que en el reloj de la macro sean las 19:00???
Muchas gracias!
Hola.
Abusando de tu ayuda quisiera que me pudiaras aconsejar
Tengo el siguiente reloj
Sub Reloj()
Hoja1.Range("A2") = Format(Now, "hh:mm:ss")
Application.OnTime (Now + TimeValue("0:00:10")), "Reloj"
End Sub
El problema es que me actualiza la funcion "=ahora()" que tenngo en otras celdas automaticamente en cualquier parte del libro cuando la intruccion dice solamente "A2"
deseo saber como colocar la fecha y la hora en una celda y que esta quede grabada; es decir que no se modifique por las celdas siguientes y tampoco al abrir el archivo gracias
Excelente pag. aprediendo un poco excel y se ve grandiosa. Molestando un favor necesito lo mismo que Mauro cuando tenga cierto valor una celda en otra anote la hora y que se quede grabada o registrada ya intente con ahora() hoy() y demás pero se actualizan y eso no me sirve necesito que se quede fijo y una pregunta mas como puedo hacer para que un libro se calcule cada segundo si es posible gracias por todo
Mírate mi comentario del 16 de septiembre en este artículo: control horario. De ahí puedes sacar lo de dejar fija la fecha y hora.
Respecto a que una hoja se calcule automáticamente cada segundo, prueba esto:
Sub Auto_open()
'Que calcule todo
Calculate
'Volvemos a autollamar al macro "Auto_open",
'a cada segundo
Application.OnTime Now + TimeValue("00:00:01"), "Auto_open"
End Sub
Saludos
Hola, Gracias, por compartir sus conocimientos, espero me pueda ayudar, con lo siguiente:
Necesito que se inserte la hora siempre en la columna M pero que sea de la fila que se encuentra el cursor o activa.
saludos
Buenos dias necesito de tu gran ayuda y no encuentro la solucion por ningun lado.
ejecuto esta macro para medir tiempo de atencion en un servicio
pero el cronometro esta solamente en la celda z9 e inicia con la celda I9 y se detiene con la celda P9.
necesito que este en las celdas z10 hasta la z33 y que se ejecute con con las respectiva I10,P10... Hasta la I33,P33
*****(esto va en un modulo)*****
Public InicialTime As Date
Public EarlTime As Date
Sub IniciaCronometro()
InicialTime = Now
Cronometro
End Sub
Sub DetieneCronometro()
Application. OnTime EarlTime, "Cronometro", , False
End Sub
Sub Cronometro()
EarlTime = Now + TimeSerial(0, 0, 1)
Application. OnTime EarlTime, "Cronometro"
[z9] = Format(Now - InicialTime, "Short Time")
End Sub
*****(esto va en la hoja)*****
Private Sub Worksheet_Change(ByVal Target As Range)
If Target. Address = "$I$9" Then IniciaCronometro
If Target. Address = "$P$9" Then DetieneCronometro
End Sub
te agradesco saludos
juan carlos
SALUDOS YA COLOQUE ESTA INFORMACION PERO COMO RESPUESTA ME DA DE ESTA FORMA
sábado, 00 de enero de 1900 20:18:02
LA HORA ESTA BIEN PERO LA FECHA NOO. AYUDENMEN PORFAVOR GRACIAS
Ese macro solo sirve para mostrar la hora en una celda, no la fecha.
Para que te funcione correctamente, debes darle formato de hora a esa celda, para que solo te muestre la hora, los minutos, y los segundos:
En Excel 2003: Formato --> Celdas --> Hora
En Excel 2010: Pestaña Inicio --> Formato --> Formato de celdas --> Hora
Saludos.
HOLA Q TAL ANTES QUE NADA MIL DISCULPAS, PERO APENAS EMPIEZO A MANEJAR EL EXCEL PERO AUN NO PUEDO EJECUTAR LA MACRO COMO LE HAGO SERA QUE PUEDAS EXPLICARMELO PASO A PASO!!!!! GRAXIAS
Para ser un novato con Excel, empiezas demasiado fuerte. No obstante, si quieres aprender a hacer un macro de forma sencilla, pásate por este artículo: mi primer macro en Excel.
buen dia!
Javier hice un formulario se llama Userform1 ahi le agregue una etiqueta y lo direccione a la celda donde aparece le reloj, pero al correr el formulario, el reloj se queda estatico. ¿como puedo hacer que el formulario se actualice cada segundo?
Si no te he entendido mal, quieres poner la hora en una etiqueta de un formulario, ¿verdad?.
Prueba esto en el Userform:
Private Sub UserForm_Initialize()
'llamamos al reloj
Call reloj
End Sub
Y coloca esto en un módulo:
Sub reloj()
'Mostramos la hora
UserForm1.Label1 = Format(Now, "hh:mm:ss")
Application.OnTime (Now + TimeSerial(0, 0, 1)), "reloj"
End Sub
Saludos.
hola que tal a todos antes que nada les mando un cordial saludo, bueno el motivo de mi vista ha este blog es por que neceito que laguin me ayude a resolver el siguiente problema:
al igual que la mayoria de ste blog deseo poner en una celda de excel la hora pero que transcurra como si fuese un reloj con hh,mm,ss y que se ejecute automaticamente al abrir mi hoja de excel.....
se agradece la atencion y ayuda ...
epero y me puedan ayudar graxias(angel)
Aparte del macro que has visto en este artículo que acabas de leer, crea este otro (llámalo así, Auto_open):
Sub Autop_open()
reloj
End Sub
De esa forma, cada vez que abras el libro que contiene los dos macros (Auto_open y reloj), te aparecerá la hora en la celda A1.
Saludos.
Hola felicidades por el blog, esta muy bueno tengo una duda con un formula cada vez que registro datos en una fila en la columna J coloco Registrado y en la columna K la fecha que se modifica cada celda de la columna J use est formula:
=SI(J1149="REGISTRADO", AHORA(), "FALTA")
pero al dia siguiente ya no aparece la fecha anterior sino la actual hay alguna forma de mantener las fechas anteriores?
Buenas:
Tengo tabla en la cual se cubren datos en tres horario distintos porque son 3 turnos de trabajo diferentes. ¿Cómo puedo hacer para que para cada turno se activen unas celdas de escritura, que sólo se puedan escribir durante las horas de duración del turno de trabajo?
Verónica, mírate este artículo, que creo que algo vas a poder sacar (mucho, casi todo): ejecutar una macro a una hora determinada.
Saludos.
Javier buenas tardes
De antemano felicitaciones pur tu util blog mi problema es el siguiente tenia este comando de visual y me dejo de funcionar, (algo debi cambiar) me sirve para llamar "NOW" cuando cambio valores en la columna C
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, Target.Parent.Range("C2:C20")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target.Offset(-1) = Now
Application.EnableEvents = True
End Sub
de antemano gracias por tu colaboracion
Pues acabo de probarlo, y funciona correctamente. Cada vez que cambio un dato del rango C2:C20, en la celda anterior me pone la fecha y hora del cambio.
Desconozco el porqué ha dejado de funcionarte, si antes sí que lo hacía.
Javier muchas Gracias
En efecto probe en un libro nuevo y funciona perfectamente al parecer es problema del libro actual ni idea =)
Pasare la informacion a un libro nuevo y listo
Muchas gracias
Hola, ojala que puedieran ayudar lo que sucede es que necesito una macro que me convierta esta cadena de caracteres (1111-11-11 121:491:27
) en formato fecha como se muesta aqui (11:48:26
) agradecere su ayuda.
Saludos y Gracias.
Saludos, Soy Enzo y pido ayuda por favor. En una planilla excel, al ingresar el nombre de un proveedor (ej. A) y el valor 0% en otra celda, necesito que en una tabla busque al proveedor ingresado y anote la fecha en que se ingresó este valor. Luego, si otro día se vuelve a ingresar 0% para el mismo proveedor, entonces que en la celda siguiente, anote la nueva fecha de este registro, obteniendo así en 2 celdas distintas las fechas con 0% de cumplimiento del proveedor.
Muy agradecido, Enzo.
Buenas
Tengo un problema, me gustaría que al rellenar una celda se me pusiese automáticamente en la celda de la derecha la hora exacta que se ha rellenado esta celda ¿alguien sabe como podría realizar esto? es para realizar un especie de fichero para controlar horarios de personal a trabes de códigos de barras.
Gracias por las aportaciones. Un saludo.
S.O.S hola Javier.. necesio de tu ayuda.. resulta que tengo un problema.. te cuentoo: tengo un archivo de excel con botones en visual q conectan todas las hojas, y el archivo me ha quedado muy bien (creo) el problema es que cuando abro el documento los botones y todo lo realizado en visual pasa a imagen.. que puedo hacer?
Hola Javier, gracias por tu información. Mi necesidad es tener un archivo donde cada vez que escriba un dato en la columna B, la columna A se actualice sin cambiar la hora de las columnas de arriba.
Es para un formato de ventas donde cada vendedor tiene acceso y necesito controlar sus entradas.
Me puedes ayudar y decirme cómo lo puedo hacer?
Muchas gracias.
Pásate por este artículo, para aprender el funcionamiento de las macros: Mi primer macro en Excel.
Luego te bastará copiar y pegar este código en la hoja que quieras controlar (no en ThisWorkbook, sino en la hoja que se trate):
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
On Error Resume Next
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
ActiveCell.Offset(0, -1) = Now()
ActiveCell.Offset(0, -1).NumberFormat = "[$-F400]h:mm:ss AM/PM"
ActiveCell.Offset(0, -1).Copy
ActiveCell.Offset(0, -1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Select
End If
Application.ScreenUpdating = True
End Sub
De esa forma, cada vez que escribas algo en la columna B, a la izquierda de la celda aparecerá la hora (en realidad la fecha y hora, pero como está en formato hora, solo ves la hora, a no ser que te sitúes sobre la celda). Aunque añadas datos, los datos preexistentes mantendrán su hora (si no cambias alguno de los datos de la columna B, claro).
Saludos.
Eres un sol. Muchas gracias ;)
hOLA YO NO QUIERO QUE SE MODIFIQUE LA HORA AUTOMATICAMENTE COMO HAGO ESO???
Lee mi respuesta anterior a Greicy Vela, para hacerlo de forma automática.
Otra opción más sencilla, es pulsando Ctrl + ; (tecla control, y sin soltarla, pulsas el punto y coma). De esta forma te aparecerá la fecha de hoy y será inamovible, aunque actualicesla hoja, otro día.
Saludos.
Bueno pues es una buena ayuda pero quisiera saber como hacer algo similar pero para la hora me podrías ayudar con eso?? pero por lo anterio gracia también
Como en mi comentario anterior, pero en lugar de Ctrl + ; prueba con Ctrl + : (tecla control y sin soltarla, pulsa los dos puntos).
Saludos.
hola amigos lo de que se abra un archivo a cierta hora funciona genial pero como lo hago para abrirlo a una "fecha" determinada?
hola, he puesto este codigo en un libro que se llama ventas
Sub reloj()
'Mostramos la hora
Workbooks("ventas.xlsm").Activate
Sheets("record").Select
Range("A1") = Format(Now, "hh:mm:ss")
Application.OnTime (Now + TimeSerial(0, 0, 1)), "reloj"
End Sub
y funciona el reloj muy bien, pero al querer pasarme a otra hoja del libro me regresa a la primera o sea a record, como puedo solucionar esto para poder trabajar en el rsto de las hoja
Hola amigos, necesito saber como hacer para que cuando cambie el valor de una celda en otra me ponga la fecha y hora, esto lo estoy haciendo con la funcion ahora(), pero resulta que cada vez que cambio un valor me actualiza todas las celdas que tienen esta funcion al mismo tiempo. lo que necesito es que cambie la celda asociada al la celda que estoy cambiando el valor solamente. mi mail es walter.comito@gmail.com. muchas gracias
Hola que tal:
Espero me pueda ayudar alguien; Requiero que en una celda de excel al vencerse un tiempo se ponga de color rojo o algun otro con el texto "vencido" o "checar" pero a su vez que haya otra celda que tenga el tiempo de duración, es para aplicar un monitoreo y por ejemplo celda A4 se le da 8 y en celda B6 se inicie un contador de tiempo que al pasar los 8 minutos o el valor de A4 se ponga como digo en rojo y/o con un mensaje de aviso.
Hola, me pueden ayudar, encontre esta macro la cual me sirve mucho, pero al aplicarla no funciona correcta, me pueden indicar donde escribir las macros para que funcione, dejo mi correo cris.danes@gmail.com muchas gracias. ahhh excelente pagina los felicito a todos
Sub Auto_open()
'Al abrir el fichero, controlamos la hora,
'y cuando den las 8:00 am, que se ejecute el macro
'llamado "mi_despertador"
Application.OnTime TimeValue("19:58:00"), "mi_despertador"
End Sub
Y luego añade este otro macro:
Sub mi_despertador()
MsgBox ("Son las " & Time & " en punto. A ver si te depiertas ya!.")
End Sub
Al macro Auto_open no le cambies nombre. Se ejecutará al abrir el fichero de excel.
Cuando abras el fichero, se pondrá en marcha el reloj, y al dar las 8:00 am, se ejecutará el macro que he llamado "mi_despertador".
Saludos.
23 de marzo de 2009 20:00
Para aprender a hacer un macro, mírate esto: mi primer macro en Excel.
Saludos
Publicar un comentario