Lección 6: Copiar, pegar y borrar celdas automáticamente con macros.

copiar-celdas

Escrito por Administrador

20 de septiembre de 2021

En esta lección, vas a aprender a copiar, pegar y borrar el contenido de una celda o rango de celdas de manera automática. ¡Vamos al lío!

Existen diversos métodos para copiar y pegar el contenido de una celda en otra, te voy a explicar el más sencillo que coincide con el más utilizado.

1. Copiar celdas y rangos.

En primer lugar, para copiar el contenido de una celda, no tienes más que seleccionarla y elegir la propiedad Copy:

Cells(2,3).Copy

En este ejemplo, copiamos al portapapeles el contenido almacenado en la celda C2.

En cambio, si lo que queremos es copiar un rango de celdas podrías usar:

Range(Cells(1,4),Cells(1,10)).Copy

O bien:

Range("D1:J1").Copy

En este ejemplo, copiamos al portapapeles el valor del rango D1-J1.

2. Pegar celdas y rangos.

Para pegar el contenido copiado en el portapapeles en una determinada celda (valor y formato de celda), basta con seleccionarla y utilizar la propiedad PasteSpecial:

Cells(3,1).PasteSpecial

En este ejemplo, copiamos el contenido del portapapeles en la celda A3.

Sin embargo, si solo queremos pegar sus valores, lo haríamos así:

Cells(3, 1).PasteSpecial Paste:=xlPasteValues

Cuando hemos copiado en el portapapeles un rango de celdas, para pegarlo, seleccionamos la primera de las celdas y se copiará el rango completo de ésta hacia abajo.

A continuación, vemos esto con un ejemplo.

Primero, crea un libro en blanco, abre el editor VBA, inserta cuatro módulos y copia las siguientes macros:

 

Macro 1. Copiar valores y formato de una celda a otra.

Sub Leccion6_1()

'Macro que copia el contenido de la celda C3 en la celda D3 (valores y formato)

Cells(3, 3).Copy

Cells(3, 4).PasteSpecial

'Desactiva el modo copiar para que no se quede seleccionada la celda con líneas discontinuas

Application.CutCopyMode = False       

End Sub

Macro 2. Copiar solo valores de una celda a otra.

Sub Leccion6_2()

'Macro que copia el contenido de la celda C3 en la celda E3 (solo valores, formato no)

Cells(3, 3).Copy

Cells(3, 5).PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

End Sub

Macro 3. Copiar valores y formato de un rango de celdas. 

Sub Leccion6_3()

'Macro que copia el contenido del rango C3-C10 en la celda F3 (valores y formato)

Range("C3:C10").Copy

Cells(3, 6).PasteSpecial

Application.CutCopyMode = False

End Sub

Macro 4. Copiar solo valores de un rango de celdas.

Sub Leccion6_4()

'Macro que copia el contenido del rango C3-C10 en la celda G3 (solo valores, formato no)

Range("C3:C10").Copy

Cells(3, 7).PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

End Sub

Seguidamente, rellena la hoja con los valores que se muestran a continuación y crea cuatro botones asociados a las cuatro macros que acabamos de copiar. Debería quedarte algo así:

total-operaciones-matematicas-macros

Al ejecutar la primera macro, vemos como se va a copiar el valor de la celda C3 en D3, pero también el formato de la misma. Aprovecho y te dejo un enlace donde explico cómo modificar el formato de una celda utilizando macros.

total-operaciones-matematicas-macros

En cambio, al ejecutar la segunda macro, se copia el valor de la celda C3 en D3, pero no el formato.

total-operaciones-matematicas-macros

Con la tercera macro, copiamos todo el rango de celdas en la columna F, tanto valores como formatos.

total-operaciones-matematicas-macros

Finalmente, en la cuarta macro copiamos todo el rango de celdas en la columna G, pero sólo valores.

total-operaciones-matematicas-macros

3. Borrar celdas y rangos.

Para borrar el valor almacenado en una celda, usaremos la propiedad ClearContents:

Cells(2,5).ClearContents

Sin embargo, si se trata de rangos de celdas utilizamos la siguiente sintaxis:

Range("D1:J1").ClearContents

O bien:

Range(Cells(1,4),Cells(1,10)).ClearContents

Si lo que queremos es borrar tanto valores como formatos, usaremos la propiedad Clear.

Vamos a verlo con otro ejemplo.

En primer lugar, crea dos módulos más y copia las siguientes macros.

 

Macro 5. Borrar solo los valores de un rango de celdas.

Sub Leccion6_5()

'Macro que borra el contenido del rango F3-F10 (solo valores, formato no)

Range("F3:F10").ClearContents

End Sub

Macro 6. Borrar valores y formato de un rango de celdas.

Sub Leccion6_6()

'Macro que borra el contenido del rango F3-F10 (valores y formato)

Range("F3:F10").Clear

End Sub

Seguidamente, añade dos botones y asignalos a las dos nuevas macros.

total-operaciones-matematicas-macros

Como resultado, al ejecutar la quinta macro, borramos los valores de la columna F, pero no el formato de las celdas.

total-operaciones-matematicas-macros

Vuelve a ejecutar la tercera macro para volver a rellenar la columna F con valores.

total-operaciones-matematicas-macros

Ahora ejecuta la sexta macro, verás cómo se borran tanto los valores como el formato de las celdas de la columna F.

total-operaciones-matematicas-macros

Con esto llegamos al final de la sexta lección, en la que has aprendido a copiar, pegar y borrar celdas automáticamente utilizando macros.

Espero que te esté gustando el curso y que me plantees cualquier duda que te surja. También puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario, soy todo oídos. Nos vemos en el próximo capítulo.

Descarga el archivo del ejemplo

« L5. Operaciones matemáticas en macros.

L7. Automatizar el formato de una celda con macros. »

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Quizá te interese,

Contacto