Excel - Comparar Fechas macro?

 
Vista:
Imágen de perfil de miguel
Val: 38
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Comparar Fechas macro?

Publicado por miguel (20 intervenciones) el 13/12/2017 03:52:17
Hola a todos tengo un gran problema y no lo puedo resolver ojala me puedan orientar

Tengo una columna en la cual existen solo fechas las cuales quiero comparar con la fecha actual
y posteriormente mostrarla en otra hoja donde en un MSGBOX o en un panel me muestra como resultado las fechas que ya pasaron a comparación del dia actual.

Este es mi código:

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
Private Sub CalibrationExpired_Click()
Sheets("sheet2").Select
Dim contador As Integer
Dim n As Integer
Dim fecha As Date
Dim pos As Integer
pos = 0
n = 1
Dim ID As Integer
Dim matrizDesc(477, 2) As Integer ' 477 es el numero de celda donde termina el listado, se crea una matriz de 477 filas, con dos columnas. Esta matriz sera la que mostrara la funcion "Msgbox"
Dim fechaActual As Date
fechaActual = Date
 
 
For contador = 2 To 478
fecha = Sheet2.Cells(contador, 5)
'fecha = CDate(Sheet2.Cells(contador, 5))
    MsgBox (fecha)
 
    If fecha < fechaActual Then
     ID = Sheet2.Cells(contador, 1)
    End If
 
matrizDesc(n, 1) = ID
matrizDesc(n, 2) = fecha
 
n = n + 1
contador = contador + 1
 
Next
 
MsgBox (matrizDesc)
 
End Sub
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

Comparar Fechas macro?

Publicado por Antoni Masana (2463 intervenciones) el 13/12/2017 07:55:09
Buenas Miguel,

Dices que tienes un problema, cuentas lo que quieres hacer pero cual es el problema.

Yo veo varios:

1.- Haces referencia a la hoja con el nombre por defecto en inglés, si pruebo esta macro en mi Excel no funciona porque en español es hoja2. Lo mejor es darle un nombre a la hoja y hacer referencia a ese nombre. Por ejemplo:

1
Sheets("Fechas").Select

2.- En la línea 15 haces la hoja2 activa y en las líneas 21 y 25 vuelves a hacer referencia a la hoja. no es necesario, o una cosa o la otra. Funciona igual pero es más lento.

1
2
3
4
5
6
7
8
9
10
11
12
Sheets("Fechas").Select
pos = 0
n = 1
fechaActual = Date
 
For contador = 2 To 478
    fecha = Cells(contador, 5)
   'fecha = CDate(Cells(contador, 5))
    MsgBox (fecha)
    If fecha < fechaActual Then
        ID = Cells(contador, 1)
End If

3.- La suma de la linea 32 no tiene sentido, el FOR ya suma 1 y lo que consigues es tratar sólo las líneas pares. para eso es mejor:

1
For contador=2 To 478 Step 2

Pero creo que se trata solo de una línea que sobra porque las quieres tratar todas, creo.

4.- El primer parámetro del MsgBox es un texto y no una matriz y no creo que funcione. Además es imposible ver todos los datos a la vez.


TU MACRO:

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
Private Sub CalibrationExpired_Click()
    Dim contador As Integer
    Dim n As Integer
    Dim fecha As Date
    Dim pos As Integer
    Dim ID As Integer
    Dim fechaActual As Date
 
    ' ---  477 es el numero de celda donde termina el listado, 
    '      se crea una matriz de 477 filas, con dos columnas. 
    '      Esta matriz sera la que mostrara la funcion "Msgbox"
 
    Dim matrizDesc(477, 2) As Integer
 
    Sheets("sheet2").Select
    pos = 0
    n = 1
    fechaActual = Date
 
    For contador = 2 To 478
        fecha = Sheet2.Cells(contador, 5)
       'fecha = CDate(Sheet2.Cells(contador, 5))
        MsgBox (fecha)
        If fecha < fechaActual Then
            ID = Sheet2.Cells(contador, 1)
        End If
 
        matrizDesc(n, 1) = ID
        matrizDesc(n, 2) = fecha
 
        n = n + 1
        contador = contador + 1
    Next
    MsgBox (matrizDesc)
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
1
Comentar
Imágen de perfil de miguel
Val: 38
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Comparar Fechas macro?

Publicado por miguel (20 intervenciones) el 13/12/2017 14:37:14
Gracias Antonio me sirvio el feedback que me diste creo a ver conseguido realizar lo que buscaba a medias :/ ....

Enserio es imposible traer todos los resultados del for en forma de lista en VBA?
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

Comparar Fechas macro?

Publicado por Antoni Masana (2463 intervenciones) el 13/12/2017 21:14:31
Sobre tu pregunta:

Enserio es imposible traer todos los resultados del for en forma de lista en VBA?

supongo que lo dices por el MsgBox del final.
Bien, no es imposible, es solo que hay que hacerlo bien.

Antes de continuar veo algo que supongo que esta mal.

Si quieres mostrar las fechas anteriores a la fecha actual lo estas haciendo mal, tiene que montar la Matriz dentro del IF.

Y montar una cadena de datos con salto de linea.

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
Private Sub CalibrationExpired_Click()
    Dim contador As Integer
    Dim fecha As Date
    Dim fechaActual As Date
 
    ' ---  477 es el numero de celda donde termina el listado, 
    '      se crea una matriz de 477 filas, con dos columnas. 
    '      Esta matriz sera la que mostrara la funcion "Msgbox"
 
    Dim Matriz As String
 
    Sheets("sheet2").Select
    n = 1
    fechaActual = Date
    Matriz = ""
 
    For contador = 2 To 478
        fecha = Cells(contador, 5)
       'fecha = CDate(Cells(contador, 5))
        If fecha < fechaActual Then
            Matriz = Matriz & Cells(contador, 1) & " " & _
                              Format(fecha,"DD/MM/YYYY") & VbCr
        End If
    Next
    MsgBox Matriz
End Sub

Para el salto de línea he puesto VbCr, si no va bien prueba VbCrLf

Si la comparacion de fechas no funciona bien hay que usar otr forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub CalibrationExpired_Click()
    Dim fecha_1 As String, contador As Integer, _
        fecha_2 As String, fechaActual As String, Matriz As String
 
    Sheets("sheet2").Select
    n = 1
    fechaActual = Format(Date, "YYYYMMDD")
    Matriz = ""
 
    For contador = 2 To 478
        fecha_1 = Format(Cells(contador, 5), "YYYYMMDD")
        fecha_2 = Format(Cells(contador, 5), "DD/MM/YYYY")
        If fecha_1 < fechaActual Then
            Matriz = Matriz & Cells(contador, 1) & " " & fecha_2 & VbCr
        End If
    Next
    MsgBox Matriz
End Sub

Y el MsgBox que esta dentro del For es mejor sacarlo, vale para probar la macro pero despues no tiene sentido, es mas bien molesto.

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

Comparar Fechas macro?

Publicado por miguel (20 intervenciones) el 13/12/2017 21:39:59
Probe las opciones que me pasaste y en la primera me trae un listado de fechas desde 1899 :/?? y cuando pongo el msgbox para ver fecha obtengo en el if me sale el msgbox con esto 12:00 AM

y la segunda es un listado en blanco super largo


Realmente no entiendo que pase D:
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

Comparar Fechas macro?

Publicado por Antoni Masana (2463 intervenciones) el 14/12/2017 08:16:56
Seguramente esta mal la macro, bueno lo de seguramente es muy optimista, es ta mal y punto.
Lo hice a ojo de buen cubero y en este caso no demasiado bueno.
Enviame el libro y lo reviso.

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

Comparar Fechas macro?

Publicado por miguel (20 intervenciones) el 19/12/2017 15:36:51
Gracias Antoni puedo preguntar exactamente por que usas la n = 1?

1
2
3
fechaActual = Format(Date, "YYYYMMDD")
    Matriz = ""
    n = 1
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

Comparar Fechas macro?

Publicado por Antoni Masana (2463 intervenciones) el 19/12/2017 21:07:45
La utilice para hacer unas pruebas con la macro y además de la variable n puse más cosas y esta se me paso borrarla.
La variable era para saber cuantas fechas ponia en la Matriz.
Ahora no tiene ninguna utilidad.

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 Anonimo
Val: 38
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Comparar Fechas macro?

Publicado por Anonimo (20 intervenciones) el 19/12/2017 21:10:44
Oh pues gracias antoni por tu ayuda este ejemplo me servira para tomar de ejemplo eh futuros problemas


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

Comparar Fechas macro?

Publicado por richard (1 intervención) el 28/01/2023 18:30:35
Hola Antoni

Voy a realizar una macro para conocer si un trabajador tiene retardos, acumular los retardos, ademas la macro debera decir si el trabajador tiene faltas.

Para eso debo comparar hora y minuto de registro del trabajador contra su hora de entrada establecida y obtener los minutos de diferencia, dependiendo de esos minutos de diferencia ya sabre si es retardo menor, retardo mayor o falta

Podrias darme un consejo por favor de como puedo comparar la hora y minuto por favor?
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

Comparar Fechas macro?

Publicado por Antoni Masana (2463 intervenciones) el 28/01/2023 18:41:55
Mira si esto te sirve:

1
2
3
4
5
6
7
8
9
10
11
Sub macro()
    Dim Entrada As Date, Salida As Date
 
    Entrada = Range("A1")
    Salida = Range("A2")
 
    MsgBox "Entrada a las... " & Entrada & vbCrLf & _
           "Salida a las.... " & Salida & vbCrLf & _
                                           vbCrLf & _
           "Tiempo de trabajo: " & Format(Salida - Entrada, "hh:mm:ss"), vbInformation + vbOKOnly, "PRUEBA"
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