problemas con fecha

15/09/2009 - 20:48 por j_lete | Informe spam
Hola grupo!!
Tengo una hoja de calculo de donde tengo que generar mensualmente un fichero
plano con los datos contenidos en algunas de las columnas de la hoja. Uno de
los campos es la fecha de carga que sirve para identificar los registros
correspondientes a cada mes (columna J) y los valores que tiene son por
ejemplo 28/08/2009., 28/09/2009.. El caso es que no me funciona ya que no
entre en el bucle ya que al comparar la fecha del registro con la fecha que
le introduzco no las considera a ambas como fecha. He probado con la función
format para la variable fecha, así como a definirla como string.
Como lo soluciono?
Gracias

Private Sub CommandButton1_Click()

Dim fecha As Date
Dim I As Integer

Open "c:\kk\f.txt" For Output As #1

fecha = InputBox("Introduce la Fecha de Liquidacion (27/mm/aaaa): ")
I = 2
Do While Range("J" & I) = fecha
Print #1, Range("A" & I) & Range("B" & I) & Range("H" & I)
I = I + 1
Loop

Close #1

End Sub

Preguntas similare

Leer las respuestas

#1 Cacho
16/09/2009 - 02:14 | Informe spam
Hola! j_lete. Hay algo en tu código que no cierra...

Imagina que deseas generar un archivo "f.txt" con las líneas del día
28/09/2009.

Si en la segunda fija se encuentra un registro que tiene una fecha diferente
de aquella, el código termina allí...

¿Lo habías notado?... ¿Es ésa la dificultad que encuentras?

Saludos, Cacho.
Respuesta Responder a este mensaje
#2 Héctor Miguel
16/09/2009 - 03:24 | Informe spam
hola, !

Tengo una hoja de calculo de donde tengo que generar mensualmente un fichero plano
con los datos contenidos en algunas de las columnas de la hoja.
Uno de los campos es la fecha de carga que sirve para identificar los registros correspondientes a cada mes (columna J)
y los valores que tiene son por ejemplo 28/08/2009., 28/09/2009.
El caso es que no me funciona ya que no entre en el bucle ya que al comparar la fecha del registro
con la fecha que le introduzco no las considera a ambas como fecha.
He probado con la funcion format para la variable fecha, asi como a definirla como string.
Como lo soluciono?



1) "manipular" fechas (en excel) requiere anticipar dos o tres imponderables que (probable/seguramente) encontraras por el camino (p.e.)
- los datos en las celdas son datos-fecha (reales) ? (independientemente del formato numerico), o textos que "simulan" fechas
- el orden de fechas en tu configuracion regional es: ??? (dd-mm-aa, mm-dd-aa, aa-mm-dd) porque para vba ES mm-dd-aa (USA)

2) en el codigo que comentas, declaras una variable (fecha) como tipo de datos Date (PERO...)
al usar por codigo un InputBox, la "entrada" de fechas...
a) como compruebas que el dato puede ser convertido a dato-fecha (por vba ?)
b) COINCIDE con el orden de la configuracion regional del pc (???)

3) asumiendo que el (des)conocimiento de lo anterior no es problema (?)
- prueba cambiando el bucle "do...loop" por una configuracion de pregunta diferente (p.e.)

do while range("j" & i) <> ""
if range("j" & i) = fecha then
print #1 .
end if
loop

4) por si las dudas, consulta la siguiente exposicion de manejo de fechas y temas relacionados con los regionalismos:
http://www.bmsltd.co.uk/ExcelProgRe...efCh22.htm (de Stephen Bullen)

saludos,
hector.

__ el codigo expuesto __
Private Sub CommandButton1_Click()
Dim fecha As Date
Dim I As Integer
Open "c:\kk\f.txt" For Output As #1
fecha = InputBox("Introduce la Fecha de Liquidacion (27/mm/aaaa): ")
I = 2
Do While Range("J" & I) = fecha
Print #1, Range("A" & I) & Range("B" & I) & Range("H" & I)
I = I + 1
Loop
Close #1
End Sub
Respuesta Responder a este mensaje
#3 Cacho
16/09/2009 - 16:32 | Informe spam
Complementando la info aportada por Héctor Miguel, podrías aplicar un Filtro
Avanzado según el siguiente ejemplo:

http://tinyurl.com/pabm83


Saludos, Cacho.
Respuesta Responder a este mensaje
#4 j_lete
16/09/2009 - 18:40 | Informe spam
Hola Cacho:

Tienes toda la razón!!. En realidad no lo he detectado ya que , como he
comentado, debido al problema con el formato fecha, se sale del bucle desde
el principio. He visto que Héctor Miguel ha incluido una modificación en el
código para que esto no ocurra

Gracias por comentarlo.
Saludos

"Cacho" escribió:

Hola! j_lete. Hay algo en tu código que no cierra...

Imagina que deseas generar un archivo "f.txt" con las líneas del día
28/09/2009.

Si en la segunda fija se encuentra un registro que tiene una fecha diferente
de aquella, el código termina allí...

¿Lo habías notado?... ¿Es ésa la dificultad que encuentras?

Saludos, Cacho.
Respuesta Responder a este mensaje
#5 j_lete
16/09/2009 - 19:01 | Informe spam
Hola Hector:

Respondiendo a tus preguntas.
1)
Respecto a los datos de las celdas, entiendo que son fechas reales, ya que
al ser una fecha de control siempre se refiere al dia 28 del mes corriente
para generar al final de cada mes el fichero correspondiente.
Mi configuracion regional aparece como fecha corta con el formato dd/mm/aaaa
2)
a)Realmente he intentado utilizar la función format para darle formato fecha
de esta manera format$(fecha,"dd/mm/aaaa"). También lo intenté definiendo
fecha como string
b)En principio parece que sí coincide

3) Cacho coincide contigo en que el problema no está en la fecha sino en el
bucle Do while...
Al ejecutar el código y ver que no funcionaba, pensé directamente que el
error estaba en el formato fecha ya que he tenido otros problemas con este
tipo de dato y no en el codigo. Tenéis razón, ya que como lo tenía, en cuanto
un registro no coincida. se sale del bucle sin seguir comprobando el resto de
resgistros.
Lo voy a modificar y os digo.
Gracias

"Héctor Miguel" escribió:

hola, !

> Tengo una hoja de calculo de donde tengo que generar mensualmente un fichero plano
> con los datos contenidos en algunas de las columnas de la hoja.
> Uno de los campos es la fecha de carga que sirve para identificar los registros correspondientes a cada mes (columna J)
> y los valores que tiene son por ejemplo 28/08/2009., 28/09/2009.
> El caso es que no me funciona ya que no entre en el bucle ya que al comparar la fecha del registro
> con la fecha que le introduzco no las considera a ambas como fecha.
> He probado con la funcion format para la variable fecha, asi como a definirla como string.
> Como lo soluciono?

1) "manipular" fechas (en excel) requiere anticipar dos o tres imponderables que (probable/seguramente) encontraras por el camino (p.e.)
- los datos en las celdas son datos-fecha (reales) ? (independientemente del formato numerico), o textos que "simulan" fechas
- el orden de fechas en tu configuracion regional es: ??? (dd-mm-aa, mm-dd-aa, aa-mm-dd) porque para vba ES mm-dd-aa (USA)

2) en el codigo que comentas, declaras una variable (fecha) como tipo de datos Date (PERO...)
al usar por codigo un InputBox, la "entrada" de fechas...
a) como compruebas que el dato puede ser convertido a dato-fecha (por vba ?)
b) COINCIDE con el orden de la configuracion regional del pc (???)

3) asumiendo que el (des)conocimiento de lo anterior no es problema (?)
- prueba cambiando el bucle "do...loop" por una configuracion de pregunta diferente (p.e.)

do while range("j" & i) <> ""
if range("j" & i) = fecha then
print #1 .
end if
loop

4) por si las dudas, consulta la siguiente exposicion de manejo de fechas y temas relacionados con los regionalismos:
http://www.bmsltd.co.uk/ExcelProgRe...efCh22.htm (de Stephen Bullen)

saludos,
hector.

__ el codigo expuesto __
> Private Sub CommandButton1_Click()
> Dim fecha As Date
> Dim I As Integer
> Open "c:\kk\f.txt" For Output As #1
> fecha = InputBox("Introduce la Fecha de Liquidacion (27/mm/aaaa): ")
> I = 2
> Do While Range("J" & I) = fecha
> Print #1, Range("A" & I) & Range("B" & I) & Range("H" & I)
> I = I + 1
> Loop
> Close #1
> End Sub



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida