Tabla de contenido
Siempre que lo necesite, puede copiar un rango de una hoja a otra hoja o libro de trabajo. Hay diferentes tipos de copiar y pegar. Siguiendo este artículo, usted conocerá diferentes maneras de utilizar Excel VBA copiar rango a otra hoja.
Para que la explicación sea más amena, voy a utilizar un conjunto de datos de ejemplo que representa la información personal de determinadas personas. El conjunto de datos tiene 4 columnas, que son las siguientes Nombre, Apellido, Nombre completo, y Correo electrónico .
Descargar el cuaderno de ejercicios para practicar
VBA Copiar Rango a Otra Hoja.xlsm8 Maneras de Excel VBA Copiar Rango a Otra Hoja
1. Copiar un rango a otra hoja con formato
Siempre que quieras Copia un rango de una hoja a otra hoja con Formato puede hacerlo simplemente utilizando la función VBA .
Aquí, voy a Copia una gama de Conjunto de datos hoja a ConFormato sábana.
Comencemos el procedimiento,
En primer lugar, abra el Desarrollador tab>> seleccionar Visual Basic
También puede utilizar la función ALT + F11 para abrir el VBA editor.
A continuación, se abrirá una nueva ventana denominada Microsoft Visual Basic para Aplicaciones.
A partir de ahí, abra Inserte Seleccionar Módulo .
A Módulo a continuación, escriba el siguiente código en el campo abierto Módulo .
Sub Copy_Range_withFormat_ToAnother_Sheet() Range("B1:E10").Copy Worksheets("WithFormat").Range("B1:E10") End Sub
Aquí, declaré el Subprocedimiento Copiar_rango_con_formato_a_otra_hoja
He tomado rango B1:E10 para copiar de la hoja existente al nombre de la hoja ConFormato .
En este caso, he utilizado el Copia para copiar el rango seleccionado, Copia copia cualquier rango con Formato .
Por fin, Guardar el código y vuelve a la hoja de cálculo.
A continuación, abra el Ver tab>> de Macros Seleccionar Ver macros
➤ A cuadro de diálogo aparecerá.
Ahora, desde el Nombre de la macro seleccione el Copiar_rango_con_formato_a_otra_hoja seleccione también el libro de trabajo dentro de Macros en .
Por fin, Ejecutar el seleccionado Macro .
Por lo tanto Copia la gama seleccionada con Formato a la nueva hoja que he seleccionado ( ConFormato) .
2. VBA Copiar un Rango a Otra Hoja sin Formato
También es posible Copia un rango a otra hoja sin Formato utilizando el VBA .
Aquí, voy a Copia una gama de Conjunto de datos hoja a SinFormato sábana.
Comencemos el procedimiento,
Ahora, abra el Desarrollador tab>> seleccionar Visual Basic ( utilizar el ALT + F11)
A continuación, se abrirá Microsoft Visual Basic para Aplicaciones.
A continuación, abra Inserte Seleccionar Módulo .
A Módulo a continuación, escriba el siguiente código en el campo abierto Módulo .
Sub Copiar_Rango_SinFormato_EnOtra_Hoja() Rango("B1:E10").Copiar Hojas("SinFormato").Rango("B1").PegarEspecial _ Pegar:=xlPegarValores, Operación:=xlNinguna, SaltarBlancos _ :=False, Transponer:=False End Sub
Aquí, declaré el Subprocedimiento Copiar_rango_sin_formato_en_otra_hoja
He tomado rango B1:E10 para copiar de la hoja existente al nombre de la hoja SinFormato .
En este caso, he utilizado el Copia para copiar el rango seleccionado, pero también se menciona Pegar:=xlPegarValores en el PegarEspecial para que sólo pegue Valores del rango seleccionado, no el formato.
Por fin, Guardar el código y vuelve a la hoja de cálculo.
A continuación, abra el Ver tab>> de Macros Seleccionar Ver macros
➤ A cuadro de diálogo aparecerá.
Ahora, desde el Nombre de la macro seleccione el Copiar_rango_sin_formato_en_otra_hoja y seleccione también el libro de trabajo dentro de Macros en .
Por fin, Ejecutar el seleccionado Macro .
Así, se Copia el rango seleccionado sólo con Valores no Formato .
3. Copiar un Rango a Otra Hoja con Formato y Ancho de Columna
A veces es posible que desee Copia cualquier rango seleccionado tal cual, para ello puede Copia una gama con Formato y Ancho de columna .
Aquí, voy a Copia una gama de Conjunto de datos hoja a Formato & Ancho de columna sábana.
Para ver el procedimiento para realizar la tarea utilizando VBA ,
En primer lugar, abra el Desarrollador tab>> seleccionar Visual Basic
También puede utilizar la función ALT + F11 para abrir el VBA editor.
A continuación, se abrirá una nueva ventana de Microsoft Visual Basic para Aplicaciones.
Allí, abre Inserte Seleccionar Módulo .
A Módulo a continuación, escriba el siguiente código en el campo abierto Módulo .
Sub Copiar_Rango_a_Otra_hoja_con_FormatoYAncho_columna() Rango("B1:E10").Copiar Destino:=Hojas("Formato &Cuadro Ancho_columna").Rango("B1:E10").Copiar Rango("Formato &Cuadro Ancho_columna").Rango("B1").PegarEspecial Pegar:=xlPegarAnchos_columna, _ Operación:=xlNinguna, SaltarBlancos:=Falso, Transponer:=False End Sub
Aquí, declaré el Subprocedimiento Copiar_rango_a_otra_hoja_con_formato_y_anchura_columna
He tomado rango B1:E10 para copiar de la hoja existente al nombre de la hoja de destino Formato & Ancho de columna .
En este caso, he utilizado el Copia para copiar el rango seleccionado. También utilicé el método PegarEspecial donde mencioné Pegar:=xlPegarAnchoColumna para que pegue el rango seleccionado junto con Formato y Ancho de columna .
Por fin, Guardar el código y vuelve a la hoja de cálculo.
A continuación, abra el Ver tab>> de Macros Seleccionar Ver macros
➤ A cuadro de diálogo aparecerá.
Ahora, desde el Nombre de la macro seleccione el Copiar_rango_a_otra_hoja_con_formato_y_anchura_columna y seleccione también el libro de trabajo dentro de Macros en .
Por fin, Ejecutar el seleccionado Macro .
Como resultado, se Copia la gama seleccionada con Formato y Ancho de columna .
4. VBA Copiar un Rango a Otra Hoja con Fórmula
En caso de que tenga alguna fórmula en su conjunto de datos que desee copiar, ¡no se preocupe! Puede copiar el rango que contiene Fórmula a otra hoja manteniendo la fórmula intacta.
Aquí, voy a Copia una gama de Conjunto de datos hoja a ConFórmula hoja
Comencemos el procedimiento,
Para empezar, abra el Desarrollador tab>> seleccionar Visual Basic ( también puede utilizar el ALT + F11 teclado)
A continuación, se abrirá Microsoft Visual Basic para Aplicaciones.
A partir de ahí, abra Inserte Seleccionar Módulo .
A Módulo a continuación, escriba el siguiente código en el campo abierto Módulo .
Sub Copy_Range_withFormula_ToAnother_Sheet() Range("B1:E10").Copy Sheets("ConFórmula").Range("B1").PasteSpecial Paste:=xlPasteFormulas, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
Aquí, declaré el Subprocedimiento Copiar_rango_con_fórmula_a_otra_hoja
He tomado rango B1:E10 para copiar de la hoja existente al nombre de la hoja de destino ConFórmula .
En este caso, he utilizado el Copia para copiar el rango seleccionado. También utilicé el método PegarEspecial donde mencioné Pegar:=xlPegarFormulas para que lleve el Fórmulas junto con la gama seleccionada.
Por fin, Guardar el código y vuelve a la hoja de cálculo.
A continuación, abra el Ver tab>> de Macros Seleccionar Ver macros
➤ A cuadro de diálogo aparecerá.
Ahora, desde el Nombre de la macro seleccione el Copiar_rango_con_fórmula_a_otra_hoja seleccione también el libro de trabajo dentro de Macros en .
Por fin, Ejecutar el seleccionado Macro .
Así, se Copia todos los rangos de celdas seleccionados con Fórmulas .
Lecturas similares:
- Cómo utilizar el desplazamiento de rango de VBA (11 formas)
- VBA para cada celda del rango en Excel (3 métodos)
- Cómo Utilizar el Objeto Rango de VBA en Excel (5 Propiedades)
5. Copiar un rango con Autoajustar a otra hoja
En Copia de un rango a otra hoja también puede utilizar la función AutoFit en el método VBA a AutoFit el rango copiado en la nueva hoja.
Aquí, voy a Copia una gama de Conjunto de datos hoja a AutoFit hoja
Comencemos el procedimiento,
En primer lugar, abra el Desarrollador tab>> seleccionar Visual Basic
También puede utilizar la función ALT + F11 para abrir el VBA editor.
A continuación, se abrirá una ventana de Microsoft Visual Basic para Aplicaciones.
A continuación, abra Inserte Seleccionar Módulo .
A Módulo a continuación, escriba el siguiente código en el campo abierto Módulo .
Sub Copy_Range_withFormat_AutoFit() Sheets("Dataset").Select Range("B1:E10").Copy Sheets("AutoFit").Select Range("B1").Select ActiveSheet.Paste Columns("B:E").AutoFit End Sub
Aquí, declaré el Subprocedimiento Copy_Range_withFormat_AutoFit
En primer lugar, seleccioné la hoja de cálculo Conjunto de datos . entonces tomado el rango B1:E10 para copiar de la hoja existente a la hoja de destino denominada AutoFit .
En este caso, he utilizado el Copia para copiar el rango seleccionado y el método AutoFit ajustará automáticamente las columnas dadas B:E .
Por fin, Guardar el código y vuelve a la hoja de cálculo.
A continuación, abra el Ver tab>> de Macros Seleccionar Ver macros
➤ A cuadro de diálogo aparecerá.
Ahora, desde el Nombre de la macro seleccione el Copy_Range_withFormat_AutoFit seleccione también el libro de trabajo dentro de Macros en .
Por fin, Ejecutar el seleccionado Macro .
Por lo tanto Copia el rango seleccionado a una nueva hoja y también AutoFit las columnas.
6. VBA Copiar un Rango a Otro Libro de Trabajo
Si lo desea, también puede Copia un rango de una hoja a otra hoja de un libro de trabajo diferente.
Aquí, voy a Copia una gama de Conjunto de datos hoja a Hoja1 de Libro1 cuaderno de ejercicios.
Comencemos el procedimiento,
En primer lugar, abra el Desarrollador tab>> seleccionar Visual Basic (y También puede utilizar la función ALT + F11 teclado)
A continuación, se abrirá Microsoft Visual Basic para Aplicaciones.
A continuación, abra Inserte Seleccionar Módulo .
A Módulo a continuación, escriba el siguiente código en el campo abierto Módulo .
Sub Copy_Range_WithFormat_Toanother_WorkBook() Workbooks("Excel VBA Copy Range to Another Sheet.xlsm").Worksheets("Dataset").Range("B3:E10")._ Copy Workbooks("Book1").Worksheets("Sheet1").Range("B3") End Sub
Aquí, declaré el Subprocedimiento Copiar_rango_con_formato_a_otro_libro_de_trabajo
He tomado la gama B3:E10 del nombre de la hoja Conjunto de datos para copiar de la hoja existente al nuevo nombre del libro de trabajo Libro1 y nombre de la hoja Hoja1 .
En este caso, he utilizado el Copia para copiar el rango seleccionado en el nuevo libro.
Por fin, Guardar el código y vuelve a la hoja de cálculo.
A continuación, abra el Ver tab>> de Macros Seleccionar Ver macros
➤ A cuadro de diálogo aparecerá.
Ahora, desde el Nombre de la macro seleccione el Copiar_rango_con_formato_a_otro_libro_de_trabajo seleccione también el libro de trabajo dentro de Macros en .
Por fin, Ejecutar el seleccionado Macro .
Ahora Copia la gama seleccionada del Conjunto de datos a otro libro de trabajo.
7. Copiar un rango a la última fila de otra hoja
En cualquier caso, si desea Copia un rango a otra hoja desde una celda en particular o desde la última celda puede hacerlo utilizando la función VBA .
Antes de entrar en el procedimiento, quiero decirte que, he tomado dos nuevas hojas que consisten en Nombre completo, correo electrónico, y Dirección .
Observemos el Conjunto de datos2 hoja primero.
Aquí está el Debajo de la última celda sábana.
Aquí, voy a Copia una gama de Conjunto de datos2 hoja a Por debajo de la última celda pero desde la primera celda no en blanco.
Para empezar, abra el Desarrollador tab>> seleccionar Visual Basic
A continuación, se abrirá Microsoft Visual Basic para Aplicaciones.
A continuación, abra Inserte Seleccionar Módulo .
A Módulo a continuación, escriba el siguiente código en el campo abierto Módulo .
Sub Copy_Range_BelowLastCell_AnotherSheets() Sheets("Dataset2").Select lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row Range("A2:C" & lr).Copy Sheets("Below Last Cell").Select lrAnotherSheet = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row Cells(lrAnotherSheet + 1, 1).Select ActiveSheet.Paste Columns("A:C").AutoFit EndSub
Aquí, declaré el Subprocedimiento Copy_Range_BelowLastCell_AnotherSheets
En primer lugar, he seleccionado la hoja Conjunto de datos2 y luego utilizó el Fila para contar los Última fila y mantuvo la fila contada en lr .
A continuación, tomado el rango A2:C & lr para copiar de la hoja existente al nombre de la hoja de destino Por debajo de la última celda .
Una vez más, utilizó el Fila para contar los Última fila de otra hoja denominada Debajo de la última celda y mantuvo la fila contada en lrOtraHoja .
En este caso, he utilizado el Copia para copiar el rango seleccionado y el método AutoFit ajustará automáticamente las columnas dadas A:C .
Por fin, Guardar el código y vuelve a la hoja de cálculo.
A continuación, abra el Ver tab>> de Macros Seleccionar Ver macros
➤ A cuadro de diálogo aparecerá.
Ahora, desde el Nombre de la macro seleccione el Copy_Range_BelowLastCell_AnotherSheets seleccione también el libro de trabajo dentro de Macros en .
Por fin, Ejecutar el seleccionado Macro .
Por lo tanto Copia la gama seleccionada y Pegar de la última fila de otra hoja.
8. VBA Copiar un Rango a la Última Fila de Otro Libro de Trabajo
Si desea Copia un rango a la última fila de otra hoja del libro de trabajo también puede utilizar la función VBA .
Aquí, voy a Copia una gama de Conjunto de datos2 hoja a Hoja1 de Libro2 pero desde la primera celda no en blanco.
Para iniciar el procedimiento,
En primer lugar, abra el Desarrollador tab>> seleccionar Visual Basic
También puede utilizar la función ALT + F11 para abrir el VBA editor.
A continuación, se abrirá una nueva ventana de Microsoft Visual Basic para Aplicaciones.
A partir de ahí, abra Inserte Seleccionar Módulo .
A Módulo a continuación, escriba el siguiente código en el campo abierto Módulo .
Sub Copy_Range_BelowLastCell_To_Another_Workbook() Dim wsCopy As Worksheet Dim wsDestination As Worksheet Dim lCopyLastRow As Long Dim lDestLastRow As Long Set wsCopy = Workbooks("Excel VBA Copy Range to Another Sheet.xlsm").Worksheets("Dataset2") Set wsDestination = Workbooks("Book2.xlsx").Worksheets("Sheet1") lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A").End(xlUp).Row lDestLastRow =wsDestination.Cells(wsDestination.Rows.Count, "A").End(xlUp).Offset(1).Row wsCopy.Range("A2:C" & lCopyLastRow).Copy wsDestination.Range("A" & lDestLastRow) End Sub
Aquí, declaré el Subprocedimiento Copiar_Rango_bajo_última_celda_en_otro_libro_de_trabajo donde wsCopy y wsDestino son Hoja de trabajo tipo, lCopyLastRow y lDestLastRow son Largo tipo.
En primer lugar, utiliza Establecer para establecer variables para la hoja a copiar y la hoja de destino.
A continuación, utilizó el Fila para encontrar la última fila basándose en los datos de la columna A en el rango de copia.
Una vez más, utilizó el Fila para encontrar la primera fila en blanco a partir de los datos de la columna A en el rango de destino también se utiliza Desplazamiento para bajar una propiedad.
Por fin, Copiado los datos de Conjunto de datos2 hoja del Excel VBA Copiar Rango a Otra Hoja.xlsm libro de trabajo al destino Hoja1 del cuaderno Libro2.xlsx .
Ahora, Guardar el código y vuelve a la hoja de cálculo.
A continuación, abra el Ver tab>> de Macros Seleccionar Ver macros
➤ A cuadro de diálogo aparecerá.
Ahora, desde el Nombre de la macro seleccione el Copiar_Rango_bajo_última_celda_en_otro_libro_de_trabajo seleccione también el libro de trabajo dentro de Macros en .
Por fin, Ejecutar el seleccionado Macro .
Por lo tanto Copia el rango seleccionado de la hoja existente a la última fila de otro libro de trabajo.
Sección práctica
He incluido una hoja de práctica en el libro de ejercicios para practicar estas formas explicadas de Excel VBA copiar rango a otra hoja.
Conclusión
En este artículo, he explicado 8 tipos diferentes de formas fáciles y rápidas de Excel VBA copiar rango a otra hoja. Estas diferentes formas le ayudarán a copiar un rango de una hoja a otra y también de una hoja a otro libro de trabajo. Por último, pero no menos importante, si usted tiene cualquier tipo de sugerencias, ideas y comentarios por favor no dude en comentar a continuación.