Formato horas y condicionales.

07/12/2005 - 18:29 por eslait | Informe spam
Hola,

me estoy volviendo loco por poner una condición en la que, cuando la hora de
la casilla A1 formato "hh:mm"(p.ej.)
sea igual a la hora del sistema, que me escriba un cartelito que diga
"hola".
lo que intento es +si(ahora()=a1;"") pero no me hace nada.
Creo que los principales problemas son:
- la coincidencia entre ahora() y la casilla A1 nunca se cumpla puesto que,
aunque la hora/minutos coincidan,
los segundos no es posible que coincidan.¿Habría alguna forma de redondear
la hora para que solo tuviera en
cuenta los minutos (desechando las horas)?
- otra dificultad es que ahora() solo funciona cuando se acualiza alguna de
las casillas de la hoja. Por lo tanto, una vez
haya pasado la igualdad de la condición sin haber actualizado la hora, el
efecto de la condición será nula.

Creo haberme explicado bien.Espero vuestras sugerencias mientras sigo
buscando una solución.

Un saludo

eslait
 

Leer las respuestas

#1 KL
07/12/2005 - 21:04 | Informe spam
Hola eslait,

Creo que realmente tu problema es el numero 2 de tu lista. El primero no creo que lo sea tanto, aunque hablando de numeros de punto
flotante que son los valores de horas todo podria ser por supuesto. El tema como ya has dicho es que para que se detecte la
coincidencia la formula se debe recalcular con cierta periodicidad, cosa que no pasa normalmente.

Las opciones que se me ocurren pasan necesariamente por el uso [en mayor o menor grado] de macros.

1. Usar un macro como el siguiente:

Sub test()
Application.OnTime Sheets("Hoja1").Range("A1").Value, "Mensaje"
End Sub

Sub Mensaje()
MsgBox "Hola"
End Sub

2. Usando formula y macros

a) Pon la siguiente formula en, digamos, la celda [B1] (en [A1] tendras la hora buscada en formato de hora) de la Hoja1:

=SI(Y(HORA(AHORA())=HORA(A1);MINUTO(AHORA())=MINUTO(A1));"Hola";"")

b) pon el siguiente codigo en el modulo VBA de ThisWorkbook:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
StopBlinking
End Sub

Private Sub Workbook_Open()
StartBlinking
End Sub

c) pon el siguiente codigo en un modulo VBA estandar de tu archivo (digamos Modulo1):

Dim dtNext As Date

Sub StartBlinking()
dtNext = Now + TimeValue("00:00:01")
Application.Calculate
Application.OnTime dtNext, "StartBlinking"
End Sub

Sub StopBlinking()
Application.OnTime dtNext, "StartBlinking", schedule:=False
End Sub

d) Guarda los cambios, cierra y vuelve a abrir tu libro.


Las ventajas y desventajas de los metodos creo que seran literalmente "evidentes" cuando los pruebes.

Saludos,
KL

Preguntas similares