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:
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.
'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.
'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.
'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.
'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í:
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.
En cambio, al ejecutar la segunda macro, se copia el valor de la celda C3 en D3, pero no el formato.
Con la tercera macro, copiamos todo el rango de celdas en la columna F, tanto valores como formatos.
Finalmente, en la cuarta macro copiamos todo el rango de celdas en la columna G, pero sólo valores.
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:
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.
'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.
'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.
Como resultado, al ejecutar la quinta macro, borramos los valores de la columna F, pero no el formato de las celdas.
Vuelve a ejecutar la tercera macro para volver a rellenar la columna F con valores.
Ahora ejecuta la sexta macro, verás cómo se borran tanto los valores como el formato de las celdas de la columna F.
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. También puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario, soy todo oídos.
Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.
Nos vemos en el próximo capítulo.
Si te ha servido y quieres donar
Descarga el archivo del ejemplo
9 Comentarios
Enviar un comentario
« L5. Operaciones matemáticas en macros.
L7. Automatizar el formato de una celda con macros. »
Gran explicación.
Necesito ayuda si pudiera ser, ya que no doy con la solución.
Cómo copio en una celda el valor almacenado en una variable?
Mil gracias!
Ya lo conseguí.
Se le asigna el valor de la variable.
Range("A2").Value = variable
Saludos!
Hola María,
Estás hecha una experta 😉
Para cualquier cosa, por aquí estoy.
Saludos.
Para el caso donde se necesita copiar la información de cualquier excel y copiarlo al que siempre se utiliza.
Ejemplo: Copio Info de Excel "x" y utilizo unicamente macro para copiar en valores a un excel fijo. Gracias
Buenos días Alexandra,
Simplemente tienes que ir cambiando de libro. Echa un vistazo a este post: https://www.vbatotal.com/leccion-21-seleccionar-una-hoja-o-un-libro-automaticamente-con-vba/
Saludos.
Saludos.
Se puede dar el caso en pegar la información en celdas seleccionadas con el mouse, pero no determinar en la macro las celdas.
Buenos días Wilfredo,
En ese caso, si quieres pegar el contenido, por ejemplo, de las celdas C3 y D3 tomando como referencia la celda seleccionada, no tendrías más que escribir el siguiente código asociado a un botón,
Sub Copiar()
'Macro que copia el contenido de las celdas C3 y D3 en las celdas seleccionadas
Range("C3:D3").Copy
ActiveCell.PasteSpecial
End Sub
Si necesitas más ayuda, por favor, abre un hilo en el foro y lo vemos.
Saludos.
Impresionante curso, muy útil!!
Gracias Zansa,
Para cualquier cosa, por aquí me tienes.
Saludos.