15 – Le MACRO con Excel – Copia e incolla

Sfruttando il codice VBA, vedremo quali istruzioni possiamo usare per fare una di quelle operazioni che forse eseguiamo piu spesso: il copia e incolla.  

Ma partiamo subito, portiamoci in Sviluppo, scegliamo Macro e diamo il nome alla nostra nuova macro che chiameremo “copia_incolla” e quindi premiamo su Crea.


Per visualizzare meglio ciò che stiamo facendo posizioniamo sulla parte destra dello schermo la cartella di lavoro e sulla parte sinistra la finestra dedicata al progetto VBA.

Partiamo dall’operazione più semplice possibile che si possa fare, copiare il contenuto di una singola cella in un’altra destinazione, quindi se volessimo copiare il contenuto cella cella A1 in H1 scriveremo:

Range(“A1”).Copy Range(“H1”)


Facciamo partire la macro premendo F8


Come potete vedere Excel con solo copierà il contenuto ma anche la formattazione, proprio lo stesso risultato che otterremo facenco il classico CTRL+C e CTRL+V

Siamo partiti copiando una singola cella, ma tramite l’oggetto range, possiamo indicare un gruppo di celle, la sintassi rimane la medesima, volendo copiare l’intervallo A1:C10 potremo modificare la riga precedente nel seguente modo:

Range(“A1:C10”).Copy Range(“H1”)


Diamo OK ed in questo modo abbiamo creato l’elenco che ci permetterà di scegliere il mese desiderato.


Se volessimo incollare il contenuto in un altro foglio, ci basterà indicare il percorso di destinazione, quindi se volessimo copiare il contenuto precedente, ma come destinazione scegliessimo il “Foglio2” dovremo scrivere:

Range(“A1:C10”).Copy Worksheets(“FOGLIO2”).Range(“A1”)


Per copiare il contenuto di un’intera riga o di un’intera colonna, scriveremo le seguenti righe di codice:

Rows(26).Copy Rows(27)

Columns(“A”).Copy Columns(“H”)


Come per le operazioni di copia e incolla fatte dal foglio di lavoro, possiamo specificare quali opzioni vogliamo, per esempio se copiare solo le formule, solo i valori, la formattazione e via così dicendo


Per queste operazioni useremo il comando PasteSpecial.

Poiché le possibili opzioni sono numerose, tratteremo solo quelle di uso più comune, ad ogni modo una volta che si è compreso come indicare i vari argomenti potrete proseguire in piena autonomia in base alle varie esigenze.

Prima di tutto diamo uno sguardo alla sintassi per capire come gestire i vari parametri


In expression dovremo inserire la cella di destinazione tramite l’istruzione Range

 Subito dopo seguirà il comando  .PasteSpecial

Tramite Paste scriveremo il codice che indicherà in che modo incollare i dati, cioè se vogliamo incollare tutto, solo le formule, solo i valori e tante altre opzioni


Tramite Operation, potremo indicare se vogliamo aggiungere, dividere, sommare oppure sottrarre un determinato valore alla cella di partenza


SkipBlanks, che potrà assumere solo i valori di True o False per tenere o meno le celle vuote in fase di copia e incolla

Infine Transpose che anche in questo caso potrà assumere solo i valori di True o False per effettuare la trasposizione dei dati da riga a colonna e/o viceversa.

Ma passiamo alla pratica, partendo da una cella contenente una formula, per esempio la cella B24 il nostro intento sarà quello di incollare solo il valore.

Iniziamo a scrivere:

Range(“B24”).Copy

Proseguiamo nella riga successiva con la cella di destinazione:

Range(“I24”).PasteSpecial xlPasteValues


Come potete vedere nella barra delle formule la cella I24 riporta solo un valore numerico anziché la formula SOMMA contenuta nella cella B24

Per copiare il formato della tabella ci basterà indicare dopo il comando PasteSpecial l’istruzione xlPasteFormats, il codice sarà il seguente:

Range(“A1:F24”).Copy

Range(“H1”).PasteSpecial xlPasteFormats


Sempre con il comando PasteSpecial saremo in grado di aggiungere, dividere, moltiplicare o sottrarre un numero per un valore contenuto in un’altra cella, per esempio se scrivessimo il numero 10 nella cella J24 e volessimo moltiplicarlo per il dato presente nella cella I24, il codice sarà il seguente:

Range(“I24”).Copy

Range(“J24”).PasteSpecial , xlPasteSpecialOperationMultiply


Il risultato nella cella J24 sarà il contenuto della cella I24 moltiplicato per 10.

Infine se avessimo la necessità di fare la trasposizione dei dati da riga in colonna o viceversa, vediamo insieme come scrivere il codice.

Supponiamo di voler copiare i nomi delle regioni presenti nella colonna A e di volerli incollare nella riga 29, il codice sarà il seguente:

con il comando Copy definiamo le celle di origine:

Range(“A3:A22”).Copy

Ed in seguito per l’istruzione PasteSpecial scriviamo:

Range(“A29”).PasteSpecial , , , True


Di seguito il codice utilizzato:


Con oggi abbiamo solo una parte delle operazioni che possiamo fare tramite il linguaggio VBA, per copiare ed incollare il contenuto di una o più celle, poiché le opzioni sono molteplici il consiglio che posso dare è quello di provare facendovi aiutare dai vari screen tip che Excel propone durante la scrittura del codice.

Nel video qui sotto trovate tutti i passaggi appena illustrati, buona visione.