Foros del Web » Soporte técnico » Ofimática »

Excel invirte la fecha cuando copio celda por medio de macro

Estas en el tema de Excel invirte la fecha cuando copio celda por medio de macro en el foro de Ofimática en Foros del Web. Hola buen día, Despues de un largo tiempo sin postear nada he regresado para solicitar ayuda =) Resulta que tengo un archivo de excel que ...
  #1 (permalink)  
Antiguo 03/09/2009, 16:52
Avatar de thebearprogramer  
Fecha de Ingreso: marzo-2009
Mensajes: 17
Antigüedad: 15 años, 1 mes
Puntos: 1
Excel invirte la fecha cuando copio celda por medio de macro

Hola buen día,

Despues de un largo tiempo sin postear nada he regresado para solicitar ayuda =)

Resulta que tengo un archivo de excel que utiliza una macro para hacer copia de información de un archivo a otro, dentro de toda esta información hay una celda que contiene una fecha en formato dd/mm/aaaa cuando la celda es copiada entonces me pone lo siguiente mm/dd/aaaa, pero esto sólo pasa cuando el día es menor a 10 cuando el día es 10 o cualquier otro número superior a este entonces la fecha se copia correctamente.

No soy todo un genio en esto del VB para Excel, así que mi primera teoría es que el codigo que escribí este mal por eso se los pongo aquí.

Código:
'COPIA DE FECHA Y HORA
Workbooks("tolvas.xlsm").Activate
Range("AE3:AF3").Copy
Workbooks("agydsa1").Activate
Sheets("FORMATO").Select
Range("M4:N4").PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Espero me puedan ayudar con este pequeño inconveniente.

PD. Tengo Office 2007 versión enterprise.

Saludos.
  #2 (permalink)  
Antiguo 04/09/2009, 14:35
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Excel invirte la fecha cuando copio celda por medio de macro

Hola! thebearprogramer.
La macro no tiene nada que ver con tu dificultad. De hecho: me inclino a pensar que tienes un problema con la información/formato de origen.

Haz la siguiente prueba:
  1. Aplica la macro publicada hasta encontrar algún error.
  2. A continuación selecciona la celda que contiene a la fecha original y cámbiale el formato a "número General".
  3. Luego selecciona la celda que contiene a la fecha copiada y también cámbiale el formato a "número General".

Tras lo anterior, deberías visualizar en ambas celdas números enteros (por ejemplo 33039).
Infórmanos que has obtenido y te seguiremos guiando...

Saludos, Cacho.
  #3 (permalink)  
Antiguo 05/09/2009, 08:58
Avatar de thebearprogramer  
Fecha de Ingreso: marzo-2009
Mensajes: 17
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Excel invirte la fecha cuando copio celda por medio de macro

Hola Cacho,

Muchas gracias por tu respuesta.
Si, efectivamente el macro no está mal, pues hace lo que yo le indico copiar una celda de una hoja a otra, yo también al igual que tu pense que era problema de formato de la celda sin embargo todas las celdas donde se copia la fecha tienen el mismo formato "fecha dd/mm/aaaa".

Y ahora que me puse a revisar más detenidamente, es sólo en un documento donde la fecha se pega invertida, en la misma celda en tres hojas diferentes.

En la hoja origen de donde saco los datos hice lo que me propones de usar formato general y obtengo lo siguiente:

origen: 40061
destino: 39942

Cabe señalar que lo correcto es lo que está en el origien.

Aun si en el origen la calda la dejo como general en el destino me pega un valor distinto.

Espero tus comentarios.

Saludos,
Erick.

Última edición por thebearprogramer; 05/09/2009 a las 09:00 Razón: Agregar comentario
  #4 (permalink)  
Antiguo 05/09/2009, 10:24
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Respuesta: Excel invirte la fecha cuando copio celda por medio de macro

Hola! thebearprogramer. Mmmmm...

Antes de pedirte "levantar" tu archivo en algún servidor público, te indico que la constante:

xlPasteAllExceptBorders

instruye a que la copia sea -definitivamente- idéntica a lo original.

Por ello te sugiero ver dos cosas:
a) La celda que estás copiando, ¿contiene alguna fórmula?
b) En la hoja "FORMATO", ¿reside alguna macro del tipo Worksheet_Change(ByVal Target As Range)?
(para ver esto último, haz clic con el botón derecho de tu ratón en el nombre de la hoja -abajo a la izquierda- y selecciona la opción: Ver código)

Verifica esas cosas y comenta, ¿si?

Saludos, Cacho.
  #5 (permalink)  
Antiguo 06/09/2009, 00:14
Avatar de thebearprogramer  
Fecha de Ingreso: marzo-2009
Mensajes: 17
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Excel invirte la fecha cuando copio celda por medio de macro

Hola Cacho,

Mil gracias por estar al pendiente de mi pregunta. Te comento lo siguiente.

En la hoja de FORMATOS no hay nada de macros, de hecho es un template y todos los macros se ejecutan en el origen, donde si hay una instrucción como esa es en la hoja de origen de los datos, pues al seleccionar esa celda se despliega un calendario con el siguiente código.

Código:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngFechas, rangFechas As Range

Set rngFechas = Range("AE3") <--- Esta es la celda que intento copiar y me invierte las fechas.
Set rangFechas = Range("AD6:AF6")

If Union(Target, rngFechas).Address = rngFechas.Address Then _
Call abrir_calendario

If Union(Target, rangFechas).Address = rangFechas.Address Then _
Call abrir_calendario

End Sub
Por subirlo no tengo ningún problema lo puedo hacer o si gustas lo puedo mandar por correo electrónico también.

Saludos,
Erick.

PD. La celda que intento copiar no tiene ninguna formula =)

Última edición por thebearprogramer; 06/09/2009 a las 00:16 Razón: pd
  #6 (permalink)  
Antiguo 06/09/2009, 08:55
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Respuesta: Excel invirte la fecha cuando copio celda por medio de macro

Conviene que levantes ambos archivos (tolvas.xlsm y agydsa1) en un servidor público y gratuito a efectos que la comunidad vea tu dificultad y aporte alguna idea.

Trata que los archivos estén con formato Excel 2003 para evitar que alguno tenga dificultades en acceder a ellos.

Saludos, Cacho.
  #7 (permalink)  
Antiguo 07/09/2009, 01:16
Avatar de thebearprogramer  
Fecha de Ingreso: marzo-2009
Mensajes: 17
Antigüedad: 15 años, 1 mes
Puntos: 1
De acuerdo Respuesta: Excel invirte la fecha cuando copio celda por medio de macro

Hola Cacho,

Hoy por la mañana despues de re-leer tu respuesta me percate de algo que tu comentaste
Cita:
xlPasteAllExceptBorders

instruye a que la copia sea -definitivamente- idéntica a lo original.
Eso me dio una idea verificar que es lo que estaba haciendo para copiar la fecha y entonces me percate que para tomar esa fecha y pasarla a otra hoja lo que hacia era meterla en una variable y despues asignarla a la celda.
Ahora probe a hacer la copia y efectivamente la copia es idéntica a la original por lo que no me invierte las fechas.

Muy probablemente estoy haciendo mal uso de las variables.
Esto es lo que hacia antes.

Código:
Sub rep_agydsa()
fecha = Range("AH38")<---Aquí tomaba el valor de la fecha.
buque = Range("AD7")
descripcion = Range("AD8")
control_interlinea = Range("AB28")
control_guarda = Range("AG28")
escapeNumero = Range("AG35")

Range("AE5").Value = fecha<---Y aquí lo transferia a la celda donde se invertia la fecha.
Lo extraño es que todas las demás variables funcionan a la perfección excepto la de fecha.
Tendré que usar un poco de más código para hacer el pegado de la fecha, pero todo sea porque funcione bien =)

Mil gracias por tus aportes y comentarios sin ellos no se me hubiera ocurrido hacer esa prueba .

Saludos,
Erick.
  #8 (permalink)  
Antiguo 07/09/2009, 05:52
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Respuesta: Excel invirte la fecha cuando copio celda por medio de macro

Claro: ¡Ahí estaba la madre del borrego!!!

Probablemente tengas -en esa PC- una "pequeña ensalada" entre:

-> La Configuración Regional (ver Panel de Control ---> Configuración Regional)
-> El formato de la celda

Te sugiero que incorpores a tu procedimiento lo siguiente:
Dim fecha as Date

De este modo no será tan interesante que una fecha como 07/09/1960 sea copiada como 09/07/1960, sino ver que ocurre con fechas como:

16/05/1978

puesto que el 05/16/1978 es una fecha inexistente.

Estas pruebas te darán mayores indicios sobre lo que ocurre.

Saludos, Cacho.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:31.