Macro para modificar tipo de fecha

Tengo que volver a preguntar. Antes planteé la siguiente pregunta :
"Tengo en una columna fechas con el formato 09.01.2009
Para conseguir pasarlas al formato 09/01/2009 tengo la siguiente macro, la cual debería simplemente reemplazar "." por "/":
Columns("E:E").Select
Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
El problema es que no solo lo reemplaza sino que intercambia el día por el mes y en vez de dejar 09/01/2009 deja 01/09/2009. He probado a cambiar el formato de fecha pero no se soluciona.
¿Podéis ayudarme?
Gracias"


La respuesta de un experto fue:

"Usa esto:
Sub fecha()
Dim U As Long
U = Range("e65536").End(xlUp). Row 'Guarda en la Variable U el numero de la ultima fila
Range("E2", Cells(U, 5)).Select 'Selecciona solo el rango de datos
Selection.NumberFormat = "mm/dd/yy" 'Cambia al formato que quieres
End Sub
Lo probé y funciona, saludos
Un tip, cuando no sepas como se hace algo, usa la Grabadora de Macros y después checa el Código que creó automáticamente y lo editas a tu gusto y conveniencia, yo he aprendido muchas cosas así.
Saludos "

El problema es que aunque me ha cambiado el formato al correcto ( día, mes, año ), cuando utilizo este dato para restarlo de otra fecha, me coge la fecha con el formato anterior ( se lee 09/01/09, o sea 9 de enero del 2009 pero al ponerte en la celda aparece 01/09/09 con lo que la resta me la hace con fecha 1 de septiembre del 2009 ).
Ante esto, Julio me respondió que :
"Hola, es fácil pinchas en la celda con tu dato correcto y eliges copiar, ahora pinchas en la celda donde quieres el resultado de la resta y eliges pegado especial, del menú eliges formato y lo tienes solucionado. Un saludo
Julio"

No obstante sigo teniendo el problema. Las fechas las saco de otro excel y tienen formato "general"; si le cambio el formato a fecha, entonces al copiarlos en el excel donde tengo la macro sí que me coge el formato correcto pero si simplemente los copio, no puedo cambiarles el formato en el excel con la macro.

1 Respuesta

Respuesta
1
Volvé al principio y cambiá tu rutina de reemplazo por esta:
Sub formateando()
ultfila = Range("E65536").End(xlUp).Row
For Each cell In Range("E1:E" & ultfila)
fec = Mid(cell.Value, 1, 2) & "/" & Mid(cell.Value, 4, 2) & "/" & Mid(cell.Value, 7, 4)
cell.Value = CDate(fec)
Next cell
End Sub
Aquí también estoy cambiando de formato y pasándolo a fecha, espero te sirva porque no entendí del todo tu último párrafo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas