Pegar selección usando VBA
Este artículo trata sobre cómo podemos copiar y pegar datos de un lugar a otro en una hoja usando VBA.
Pegar selección usando VBA
Copiar y pegar ha simplificado nuestras tareas diarias en Excel. Para tener un buen dominio de la programación VBA, necesitamos aprender la idea de la función de pegado.
Hay muchos métodos para pegar datos de una celda a otra. La primera es usando un operador de asignación, la segunda es con la ayuda de la función pegar
y, por último, pero no menos importante, utilizando la función pegar especial
.
Estudiemos el método de pegar
de VBA grabando una macro. Supongamos que tenemos algunos valores en la celda A1 en Excel; ahora, vamos a copiar y pegar de A1 a B3.
Los siguientes son los pasos que tenemos que seguir para grabar una macro:
- Primero, debemos seleccionar el Record Macro que veremos debajo de la pestaña Excel Developer.
- Tan pronto como hayamos hecho clic en Grabar macro, aparecerá el nombre de la macro predeterminada. Ahora, solo tenemos que hacer clic en Aceptar.
- Ahora, todas nuestras actividades están registradas. A partir de ahora, tenemos que seleccionar la celda deseada, que en nuestro caso es A1, para copiar.
- El siguiente paso es presionar el comando Ctrl+C. Esto copiará nuestra celda seleccionada.
- Ahora, es el momento de elegir la celda de destino, B3, donde queremos pegar nuestro material copiado usando Excel.
- Para pegar, presione el comando Ctrl+V. Ahora, podemos dejar de grabar.
El código para seleccionar la celda A1 se muestra a continuación.
Código:
# vba
Range("A1").Select
Cuando se copia la celda, se selecciona su código. Copiar en lugar de Rango("A1")
porque se convierte en una celda activa o una selección después de seleccionar la celda. Así que aquí, en la codificación, aparece como selección.
Ahora, copie la siguiente celda, A1, y péguela. El código se muestra a continuación.
Código:
# vba
Range("B3").Select
Finalmente, se pega nuestro valor.
El código dice Hoja activa porque ha seleccionado la celda para pegar. Aparece como una celda activa de una hoja activa.
El código para este paso usa ActiveSheet.Paste
. Esto concluye el método pegar
en VBA.
La fórmula es como se muestra a continuación.
Expression.Paste (Dest, Url)
Puede entender la expresión ya que es el nombre de la hoja de trabajo que ha seleccionado para pegar.
Copie y pegue en la misma hoja usando VBA
Ahora, veamos cómo podemos usar el método de pegar
de VBA mientras trabajamos en la misma hoja. Supongamos que hemos tomado algunos valores de la celda B1 a la B5.
Aprenderemos a escribir el código de acuerdo a nuestras necesidades. Aquí hay algunos pasos:
El primer paso es copiar el rango de datos deseado para pegar cualquier cosa. Copiaremos el rango de B1 a B5 en nuestro caso, como se muestra a continuación.
Código:
# vba
Sub CopyExample()
Range("B1:B5").Copy
End Sub
Cuando hayamos copiado nuestros valores, debemos indicar dónde queremos pegarlos; para este propósito, elegiremos el nombre de la hoja de trabajo. Como queremos pegar en la misma hoja, usaremos el Objeto de hoja activa, como se muestra a continuación.
Código:
# vba
Sub CopyExample()
Range("B1:B5").Copy
ActiveSheet.Paste
End Sub
Una vez que hemos seleccionado el método pegar
, debemos determinar dónde está el destino. En nuestro caso, es el rango D1 a D5, como se muestra a continuación.
Código:
# vba
Sub CopyExample()
Range("B1:B5").Copy
ActiveSheet.Paste Destination:=Range("D1:D5")
End Sub
Producción:
Podemos ejecutar fácilmente este código presionando la tecla F5, y esto hará el trabajo de copiar datos de B1 a B5 y pegarlos en D1 a D5.
Copiar y pegar propiedades especiales usando VBA
También podemos copiar y pegar propiedades particulares de celdas, por ejemplo, formatos especiales, valores, etc., con la ayuda de esta característica de VBA. Le permite realizar importantes operaciones de pegado como omitir espacios en blanco y transponer.
Veamos un ejemplo en el que intentaremos copiar y pegar algunas propiedades especiales de las celdas que copiamos. Podemos usar xlPasteFormats
para pegar solo el formato de las celdas copiadas.
Podemos usar xlPasteColumnWidths
para pegar el ancho de las columnas que copiamos. También podemos usar xlPasteFormulas
para pegar las fórmulas de nuestras celdas copiadas.
Código:
# vba
Sub SpecialCopying()
Range("B1").Copy
Range("D1").PasteSpecial Paste:=xlPasteFormats
Range("D1").PasteSpecial Paste:=xlPasteColumnWidths
Range("D1").PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False
End Sub