Comparación de dos campos fechas en vba

Apelo a su buena onda y voluntad, agradezco mucho si alguien me podría decir tengo que comparar un campo de una tabla que contiene fechas, por ej

22/10/2019 09:18:00 con otro campo de otra tabla que tiene los feriados por ejemplo la tabla contiene los siguientes datos

22/10/2019

24/12/2019.  ... El problema que tengo entiendo es que como en un campo hay fecha y hora y en otro sólo fecha no corre bien el código... No puedo modificar ninguno de los dos campos. Alguien por favor que me dé una mano.

2 respuestas

Respuesta
2

Yo haría estos cambios, que te marco en negrita:

vFecha = Format(rs!scan inicio,"dd/mm/yyyy")
Do While rs!scan inicio< rs!export
If Weekday(vFecha, 0) <> 6 And Weekday(vFecha, 0) <> 7 Then
If IsNull(DLookup("[Feriado]", "[Feriados]", "[Feriado]=#" & vFecha & "#)")) = True Then

Y si así no te sirve, echa un vistazo a este ejemplo de Neckkito sobre el tema que está más que probado que funciona: http://neckkito.xyz/nck/index.php/ejemplos/18-codigo/156-contar-dias-1

Por cierto, si trabajas con Access y quieres recibir una respuesta adecuada a tu problema, lo lógico sería que colgases tu pregunta bajo la etiqueta de Access y no de Excel...

Un saludo.


Respuesta
2

Si puede compartir su macro para ver de que manera esta comparando y poder ayudarle.

A primera impresión podría decirle que si se maneja con variable tipo date podría solucionarse el problema pero hasta no ver su código nada más son especulaciones.

Function DiferenciaFechas()
Dim db As Database
Dim rs As Recordset
Dim vFecha As Date
Dim var As Integer
Set db = CurrentDb
Set rs = db.OpenRecordset("Select Scan inicio, Export, Dias from Tabla1 where Dias=0")
Do While Not rs.EOF
var = 0
vFecha = rs!scan inicio
Do While vFecha < rs!export
If Weekday(vFecha, 0) <> 6 And Weekday(vFecha, 0) <> 7 Then
If IsNull(DLookup("[Feriado]", "[Feriados]", "[Feriado]=cDate('" & vFecha & "')")) = True Then
var = var + 1
End If
End If
vFecha = vFecha + 1
Loop
rs.Edit
rs!Dias = var
rs.Update
rs.MoveNext
Loop
End Function

Scan inicio y export son fecha de entrada y salida de los lotes, con formato

02/10/2019 00:01:02 

Y feriado 12/10/2019

Te agradezco me puedas ayudar.

Saludos

En esta macro al aplicar formato a la variable se obtiene la fecha como se ve en la imagen, si es lo que necesita habrá que adaptarlo a su macro.

En caso que se le dificulte si comparte una copia de su archivo con datos ficticios tratare de adaptarlo, saludos.

Sub macro1()
    Fecha1 = Format(Range("A1").Value, "dd/mm/yyyy")
    Fecha2 = Format(Range("A2").Value, "dd/mm/yyyy")
End Sub

Trabajo en una bd de access y le puse una macro con el código que te pasé. Tengo la tabla feriados, con el campo

Feriado

01/01/2019

22/10/2019

31/12/2019

Después tengo otra tabla

Lote.    Fecha1.                      Fecha2.      Dias

15253.  12/10/2019 03:03:02 pm. 14/10/2019 04:03:03 pm

Entonces lo que quería hacer es saber cuántos días (teniendo en cuenta las horas) pasaron entre fecha1 y fecha2 y que no me cuente sábado, domingo ni feriados. El problema lo tengo con el feriado porque me lo cuenta y no debería.

Disculpa pero no entendí el cambio que me propusiste.

Gracias!

No me queda bien claro el numero de días entre fecha1 y fecha2 esta en su tabla de access o en el resultado de la macro, al parecer quiere obtener el resultado desde la macro.

Quizá sea mejor traer los datos en excel y ya sea mediante una fórmula o macro obtener el numero de días entre fecha1 y fecha2.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas