Macro traspasar rango al copiar e insertar columnas de una hoja a otra.

En la hoja1 tengo un rango C5:J12 llamado rango1, cuando copio las columnas de la C a la J y las pego (como insertar columnas copiadas) a una hoja2. En la hoja2, aunque se copia la información del rango1 de la hoja1, no se copia el rango con su nombre (rango1).

2

2 Respuestas

236.800 pts. Programador - Administrador

Hol.a

Al copiar/pegar los valores de una celda, o rango de celda, así tenga nombre, dicho nombre no se traslada a otra hoja porque justamente ha sido designado en una hoja en especifico y en un mismo libro no puede haber/existir el mismo nombre para dos rangos distintos, es decir, al copiar/pegar tendrías que quitarle al primer rango el nombre para asignarlo al rango de destino (solo con macros por cierto).

Salu2

Abraham Valencia

191.425 pts. Si de mis mayores gustos, mis disgustos han nacido,...

Puedes tener dos rangos con el mismo nombre con la siguiente condición el alcance de ambos debe ser solo para la hoja en la que están, si quieres que tengan un ámbito de todo el libro es decir que selecciones el nombre y te lleve a la hoja donde este se rango entonces el nombre tiene que ser único, te paso la macro, en tu caso si vas a copiar y quieres moverte entre rangos y entre hojas te aconsejo le pongas un secuencia como rango2, esta macro te copia el rango y en ambas hojas lo designa como rango1 solo que como menciono cuando lo selecciones solo te moverás dentro de la misma hoja.

Sub copiar()
Set h1 = Worksheets("hoja1")
Set h2 = Worksheets("hoja2")
h1.Names.Add Name:="rango1", RefersToR1C1:="=Hoja1!r5c3:r12c10"
h1.[rango1].Copy
h2.Names.Add Name:="rango1", RefersToR1C1:="=Hoja2!r5c3:r12c10"
h2.[rango1].Insert Shift:=xlToRight
End Sub

Estimado mil gracias por tu ayuda, que quiere decir ??

RefersToR1C1:="=Hoja1!r5c3:r12c10"

Considerando otro punto, tengo una macro que me permite copiar y transferir el rango a otra hoja, creo que el código que permite esto es:

Worksheets("hoja1").Copy After:=Sheets(ActiveWorkbook.Sheets.Count)

En este caso, el código lo utilizó para copiar el contenido completo de una hoja1 y transferirlo a otra, en la hoja1, con las celdas A1 Y A2 tengo un rango nombrado y este rango puede ser transferido con su nombre a otras hojas.

Sin embargo, no se como utilizar este código en la macro que me permite copiar y pegar columnas de una hoja a otra, creo que si de alguna forma podría copiar y pegar el rango con su nombre si utilizó el código anterior en la siguiente macro:

Sub Macro4()

'esta macro copia las columnas de C:J de una hoja y las inserta en la columna C de otra hoja

Sheets("hoja1").Columns("E:J").Copy
Sheets("hoja2").Select
Columns("C:C").Select
Selection.Insert Shift:=xlToRight

End Sub

Espero puedas ayudarme, respecto a este último punto, si te parece lo planteo como una nueva pregunta...

De ante mano muchas gracias por tu gran ayuda y apoyo.

Al nombrar el rango esta instrucción

RefersToR1C1:="=Hoja1!r5c3:r12c10"

le dice que fije el rango desde la fila 5 a la columna 3 hasta la fila 12 y columna 10 o lo que es lo mismo c5:j12, lo que pasa es que si utilizo este ultimo modo de referencia la macro no nombra el rango.

Lo que quieres hacer es válido y va a funcionar solo que como te mencione te lo va a dejar con un alcance local es decir solo vera válido para esa hoja, nombrar un rango tiene 2 alcances uno global que requiere nombre único ya que va a ser válido para todo el libro y el otro de alcance local que puede tener nombres duplicados que solo serán válidos en la hoja donde se encuentre, este ultimo es tu caso.

Ponlo como otra pregunta y se un poco más claro en tu explicación, no entiendo bien tu requerimiento.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas