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

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. 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

  1. Avatar

    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!

    Responder
    • Avatar

      Ya lo conseguí.

      Se le asigna el valor de la variable.

      Range("A2").Value = variable

      Saludos!

      Responder
      • Avatar

        Hola María,

        Estás hecha una experta 😉

        Para cualquier cosa, por aquí estoy.

        Saludos.

        Responder
  2. Avatar

    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

    Responder
  3. Avatar

    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.

    Responder
    • Avatar

      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.

      Responder
  4. Avatar

    Impresionante curso, muy útil!!

    Responder
    • Avatar

      Gracias Zansa,

      Para cualquier cosa, por aquí me tienes.

      Saludos.

      Responder

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.

« L5. Operaciones matemáticas en macros.

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

Categorías

abril 2024
LMXJVSD
1234567
891011121314
15161718192021
22232425262728
2930 

Debates en el foro

Avatar
Buscar Datos en Columnas
Avatar
Formularios con ADO

Contacto