Excel - Problemas con las fechas - Excel - VBA

 
Vista:
Imágen de perfil de Santiago
Val: 9
Ha aumentado su posición en 5 puestos en Excel (en relación al último mes)
Gráfica de Excel

Problemas con las fechas - Excel - VBA

Publicado por Santiago (5 intervenciones) el 17/06/2023 11:56:29
Hola:

Tengo un problema con las fechas. Os voy a meter mucho código, pero es sencillito:

En un punto de la aplicación tengo esta llamada:

1
MostrarPlanificacion Now
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Sub MostrarPlanificacion(ByVal fecha As Date)
 
    Dim lunes As Date
 
    lunes = GetLunes(fecha)
 
    MuestraFechasSemana lunes
 
End Sub
 
' Esta función comprueba si la fecha es "Lunes" y si no, va descontando dia a dia hasta llegar al lunes
Private Function GetLunes(ByVal fecha As Date) As Date
 
    If Format(fecha, "dd/MM/yyyy") = Format(Now, "dd/MM/yyyy") Then
        Do While Weekday(fecha) <> vbMonday
            fecha = DateAdd("d", -1, fecha)
        Loop
    Else
        fecha = Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_LUNES).Value
    End If
 
    GetLunes = fecha
 
End Function
 
 
Private Sub MuestraFechasSemana(ByVal lunes As Date)
 
    ' El valor de la variable "lunes" es "12/06/2023 11:40:46" (visto con el debugger)
 
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_LUNES).Value = Format(DateAdd("d", 0, lunes), "dd/MM/yyyy")
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_MARTES).Value = Format(DateAdd("d", 1, lunes), "dd/MM/yyyy")
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_MIERCOLES).Value = Format(DateAdd("d", 2, lunes), "dd/MM/yyyy")
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_JUEVES).Value = Format(DateAdd("d", 3, lunes), "dd/MM/yyyy")
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_VIERNES).Value = Format(DateAdd("d", 4, lunes), "dd/MM/yyyy")
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_FIN_SEMANA).Value = Format(DateAdd("d", 5, lunes), "dd/MM/yyyy")
 
End Sub

Y esto me pinta:
06/12/2023
13/06/2023
14/06/2023
15/06/2023
16/06/2023
17/06/2023

Todas las celdas tienen el mismo formato: formato "Fecha".

El S.O. está en todo en Español- España.

A ver si lográis iluminarme.

Gracias.
imagen_2023-06-17_115804850


¡¡Perdonad!!

Resuelto:

Por alguna razón (que desconozco), al pasarlo a string se gira la fecha:

Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_LUNES).Value = Format(DateAdd("d", 0, lunes), "dd/MM/yyyy")

Así sí funciona:

Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_LUNES).Value = lunes
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Problemas con las fechas - Excel - VBA

Publicado por Antoni Masana (2478 intervenciones) el 17/06/2023 14:34:49
Entiendo que la función GetLunes recibe una fecha, si es igual a la fecha de hoy busca el último lunes y en caso contrario una fecha del libro.
No se si es correcto porque no se que es lo que se desea hacer.

El procedimiento MTuestraFechasSemana hace algo que no se si es lo que se desea hacer. Pone un TEXTO en la celda.
La función FORMAT devuelve un texto.

Prueba esto y si no funciona sube el libro y detalla que es lo que quieres hacer.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
MostrarPlanificacion Now
 
Private Sub MostrarPlanificacion(ByVal fecha As Date)
    MuestraFechasSemana GetLunes(fecha)
End Sub
 
' ---&--- Esta función comprueba si la fecha es "Lunes" y si no, va descontando dia a dia hasta llegar al lunes
 
Private Function GetLunes(ByVal fecha As Date) As Date
    If Format(fecha, "dd/MM/yyyy") = Format(Now, "dd/MM/yyyy") Then
        Do While Weekday(fecha) <> vbMonday
            fecha = DateAdd("d", -1, fecha)
        Loop
    Else
        fecha = Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_LUNES).Value
    End If
    GetLunes = fecha
End Function
 
' ---&--- El valor de la variable "lunes" es "12/06/2023 11:40:46" (visto con el debugger)
 
Private Sub MuestraFechasSemana(ByVal lunes As Date)
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_LUNES).Value      = DateAdd("d", 0, lunes)
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_MARTES).Value     = DateAdd("d", 1, lunes)
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_MIERCOLES).Value  = DateAdd("d", 2, lunes)
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_JUEVES).Value     = DateAdd("d", 3, lunes)
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_VIERNES).Value    = DateAdd("d", 4, lunes)
    Hojas.WsTareas.Cells(TareasFilas.FILA_FECHAS, TareasCol.COL_FIN_SEMANA).Value = DateAdd("d", 5, lunes)
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Problemas con las fechas - Excel - VBA

Publicado por Antoni Masana (2478 intervenciones) el 17/06/2023 15:49:07
Un truco con las fechas y las horas.

Cuando ves en una celda 17/06/2023 ¿Es una fecha o un texto? Tu estas viendo una fecha pero ¿Para Excel que es? para saberlo ves a formato y dale formato de número. Si el contenido cambia a 45094,00 (para el caso del ejemplo, si es otra fecha, será otro valor) lo que tienes es una fecha, si no cambia es un texto.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar