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. 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
    • Ya lo conseguí.

      Se le asigna el valor de la variable.

      Range("A2").Value = variable

      Saludos!

      Responder
      • Hola María,

        Estás hecha una experta 😉

        Para cualquier cosa, por aquí estoy.

        Saludos.

        Responder
  2. 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. 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
    • 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. Impresionante curso, muy útil!!

    Responder
    • 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

noviembre 2024
LMXJVSD
 123
45678910
11121314151617
18192021222324
252627282930 

Debates en el foro

Ejecutar Fórmula Excel en TextBox
Insertar nombre del usuario

Contacto