Visual Basic - dias entre fechas tipo string

Life is soft - evento anual de software empresarial
 
Vista:

dias entre fechas tipo string

Publicado por VICTORIA (2 intervenciones) el 24/05/2007 22:54:54
Hola chicos,

Realmente estoy urgida de una ayuda experta.

Estoy trabajando con un sistema que despliega datos en excel. No soy experta en visual basic y macros, necesito colocar en una macro un codigo donde tome el valor de dos campos que son fechas pero estan escritos como string Ejemplo: '01.01.2006 el formato depende de la configuracion del usuario conectado a ese sistema. (podria ser '01/01/2006).

Necesito obtener el valor de los días que estan entre esas dos fechas.

Hay alguna manera de hacerlo?
Agradecería mucha su ayuda, ya que es un requerimiento urgente y estoy trancada en eso y lamentablemente no es mi campo.
Saludos
Victoria
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

RE:dias entre fechas tipo string

Publicado por cmgcharli (128 intervenciones) el 25/05/2007 09:46:26
Si la fecha la pones como dd/mm/yyyy si sera reconocida como tal pero si pones dd.mm.yyyy no por lo que habra que sustituir esos caracteres
Ejemplo:

Sub prueba()

Dim F1 As String
Dim F2 As String
Dim FF1 As Variant
Dim FF2 As Variant
Dim VarDias As Long

...Nota: En F1 y F2 son variables en las que se almacenara las fecha que queremos restar

F1 = "01.07.2007"
F2 = "20/01/2007"

...Nota: Lo primero es remplazar los puntos (.) si los tiene por el caracter (/) para que se reconozca como una fecha valida, y hay que hacerlo para las dos fechas. Para saber si contiene el caracter (.) utilizamos la funcion Instr(), y para reemplazar el punto (.) por la (/) utilizamos la funcion Replace().

If InStr(F1, ".") <> 0 Then
F1 = Replace(F1, ".", "/", 1)
End If
If InStr(F2, ".") <> 0 Then
F2 = Replace(F2, ".", "/", 1)
End If

...Nota: Para poder efectuar la resta de dos fechas primero tenemos que tener la seguriada de que los datos con los que operaremos son dos fecha y eso lo hacemos con la funcion IsDate(), en caso que los datos no sean fecha nos edita un cuadro de mensajes idicandonos que el formato no es valido para operar con ellos como fecha y finaliza el procedimiento. En caso de que si sean fechas con formato valido buscamos la fecha mayor de las dos para efectuar la resta, nos presenta un cuadro de dialogo indicandosnos la diferencia en dias y termina el procedimiento.

If IsDate(F1) And IsDate(F2) Then
FF1 = CDate(Format(F1, "dd/mm/yyyy"))
FF2 = CDate(Format(F2, "dd/mm/yyyy"))
If FF1 > FF2 Then
VarDias = FF1 - FF2
Else
VarDias = FF2 - FF1
End If
Msgbox "Dias de diferencia: " & vardias,64,"Asistente"
Else
MsgBox "Fecha con formato no valido.", 64, "Asistente"
End If

End Sub
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

RE:dias entre fechas tipo string

Publicado por Victoria (2 intervenciones) el 25/05/2007 15:25:45
Muchas gracias,

Esta excelente, gracias por el detalle.

Me quedan unas dudas, como hago para a F1 y F2 colocarle el valor que tiene una celda. Y como se haría una llamada a ese SUB?

Y si lo tengo que hacer para varias row, tendría que hacer un DO cierto?

Gracias por tu ayuda.
Saludos,
Victoria.
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

RE:dias entre fechas tipo string

Publicado por cmgcharli (128 intervenciones) el 26/05/2007 10:32:41
Supongamos que quieras pasar los datos de las celdas A1 y A2 a F1 y F2 respectivamente.

Sub CargarFecha()

F1=ActiveSheet.Cells(1,1).......Nota: Carga A1
F2=ActiveSheet.Cells(2,1).......Nota: Carga A2

End Sub

Para llamar al SUB primero te recomiendo que escribas el procedimiento anterior en un modulo que por ejemplo llamaremos Módulo1.
Para hacer la llamada desde otro porcedimiento en el caso de este ejemplo sera:

Módulo1.CargarFecha
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

RE:dias entre fechas tipo string

Publicado por fernando (102 intervenciones) el 26/05/2007 02:41:13
Por qué no usar fórmula de exel, donde A1 y A2 son fomato texto con fecha del tipo:
dd sep mm sep aa
sep es un separador cualquiera( / - . , etc)

=FECHANUMERO(CONCATENAR(IZQUIERDA(A1;2);"/";EXTRAE(A1;4;2);"/";DERECHA(A1;2)))-FECHANUMERO(CONCATENAR(IZQUIERDA(A2;2);"/";EXTRAE(A2;4;2);"/";DERECHA(A2;2)))
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