Macro que al abrir la celda activa este en la hora del día

Estoy tratando de hacer un archivo con las horas del día, inicio a las 6am y termino a las 6am del siguiente día, cada celda es de 5 minutos, por lo que en D9 inicie a las (6:00), E9 (6:05), F9 (6:10) y así hasta llegar a las (5:55) del siguiente día.

Busco ayuda de ustedes expertos en la materia que al momento de abrir mi archivo, la celda activa se posicione en la hora en la que nos encontramos.

Si son las 10:52, al abrir el archivo esté se posicione en la celda que esta marcada a las 10:50; y si son las 17:44 al abrir el archivo se pocisione en la celda que esta marcada con la hora de 17:40.

Espero me este explicando bien pues llevo rato buscando la forma de hacerlo y no he podido, y estoy desesperado.

2 respuestas

Respuesta
1

Prueba el siguiente código que deberías poner en el objeto "ThisWorkbook"

Private Sub Workbook_Open()
Dim hora As Date, filaActual As Long, columna As Long
columna = 4     'D
hora = Now - Date
If (Hour(hora) < 6) Then    'La hora está entre las 0 y las 6h
    filaActual = 296
    Do While Cells(filaActual, columna) > hora
        filaActual = filaActual - 1
    Loop
    Cells(filaActual, columna).Select
Else    'La hora es mayor a las 6h
    filaActual = 9
    Do While Cells(filaActual, columna) < hora
        filaActual = filaActual + 1
    Loop
    Cells(filaActual - 1, columna).Select
End If
End Sub

Lo probé con la hora actual y funciona, pero no puedo cambiar la hora de mi pc, así que no te puedo asegurar si para horarios entre 0 y 6hs también funcionará (creo que sí, pero no pude probarlo)

Salu2

Acabo de ver que las horas no las tienes hacia abajo, sino hacia el costado, por lo que deberías ajustar la macro para que lo que cambie sea la columna en lugar de la fila :S

Gustavo buenas tardes, gracias por tu apoyo, como hago el cambio de fila a columna, conozco un piquin de macros pero casi soy inexperto podrás nuevamente apoyarme con el código

Y en verdad gracias por la ayuda que ofrecen desinteresadamente

Por si aún te sirve, te dejo el código modificado

Private Sub Workbook_Open()
Dim hora As Date, filaActual As Long, columnaActual As Long
filaActual = 9
hora = Now - Date
If (Hour(hora) < 6) Then    'La hora está entre las 0 y las 6h
    columnaActual = 291     'columna KE
    Do While Cells(filaActual, columnaActual) > hora
        columnaActual = columnaActual - 1
    Loop
    Cells(filaActual, columnaActual).Select
Else    'La hora es mayor a las 6h
    columnaActual = 4       'columna D
    Do While Cells(filaActual, columnaActual) < hora
        columnaActual = columnaActual + 1
    Loop
    Cells(filaActual, columnaActual - 1).Select
End If
End Sub

Salu2

¡Gracias!

Gustavo buenos días, en verdad gracias por tu apoyo, prove la macro y anda a la prefeccion, te agradezco tu apoyo infinitamente y espero pronto poder nuevamente recibir consejos de gente experta como ustedes

Un saludo afectuso

Respuesta

Prueba con esta macro pero antes este es el resultado a las 12:16 corrí la macro y esta se posiciona en el rango 12:15, la macro la colocas en el modulo thisworkbook

y esta es la macro

Private Sub Workbook_Open()
Set horas = Range("e9").CurrentRegion
With horas
    tiempo = Time
    tiempo = CDbl(CDate(Hour(tiempo) & ":" & Minute(tiempo)))
    indice = WorksheetFunction.Match((tiempo), .Rows(1), 1)
    .Cells(1, indice).Select
End With
Set horas = Nothing
End Sub

Hola James buenas tardes gracias por tomarte un tiempo para revisar nuestras peticiones u dudas, copie la macro y la coloque en thisworkbook, al momento de abrir el archivo me da error.

El error que indica es el siguiente:

Run - Time Error '1004':

unable to get the match property of the WorksheetFunction class

Que estoy haciendo mal????

Probé la macro y funciona bien salvo cuando el rango de datos que va a analizar no eta en la fila e9, en la imagen por ejemplo los datos están en la fila 10 y la macro al abrir el archivo va a buscarlos en la fila 9 al eoncontrarlos te aparecerá el error que mencionas, solo verifica si están bien posicionados tu datos en la fila que marca la macro o bien modifica Set horas = Range("e9"). CurrentRegion cambiando el e9 por la celda donde comienzan tus datos

¡Gracias!

Hola Bond, James Bond :), voy a probar con la macro que Gustavo envío, pero muchas gracias por tomarte el tiempo de atender mi petición, espero pronto estar nuevamente bajo su experiencia en el tema recibe un cordial saludo de mi parte y desearte un excelente inicio de semana

saludos...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas