VBA – Cut, Copy, Paste from a Macro
In this Article
In this tutorial, you will learn several different methods to Copy & Paste and Cut & Paste using a VBA macro. Read the companion tutorial on Value Pasting and PasteSpecial for more advanced copying and pasting options.
To use this code: Open the Visual Basic Editor (Alt + F11), Insert a new module (Insert > Module) and copy & paste the desired code into the module.
Copy (Cut) and Paste a Single Cell
This example copies or cuts and pastes a single cell, A1 over to B1:
Sub Paste_OneCell()
'Copy and Paste Single Cell
Range("A1").Copy Range("B1")
'Cut and Paste Single Cell
Range("A1").Cut Range("B1")
End Sub
Copy Selection
If you want to copy the active selection use this:
Sub CopySelection()
'Paste to a Defined Range
Selection.copy range("b1")
'Offset Paste (offsets 2 cells down and 1 to the right
Selection.copy
Selection.offset(2,1).paste
Application.CutCopyMode = False
End Sub
Copy (Cut) and Paste a Range of Cells
This example copies or cuts and pastes a range of cells, A1:A3 over to B1:B3 :
Sub Paste_Range()
'Copy and Paste a Range of Cells
Range("A1:A3").Copy Range("B1:B3")
'Cut and Paste a Range of Cells
Range("A1:A3").Cut Range("B1:B3")
End Sub
Copy (Cut) and Paste an Entire Column
Below we will demonstrate a couple of quick examples. Read our article on Copying and Pasting Rows and Columns for detailed examples, explanations, and variations.
This example copies or cuts and pastes an entire column, A over to B:
Sub PasteOneColumn()
'Copy and Paste Column
Range("A:A").Copy Range("B:B")
'Cut and Paste Column
Range("A:A").Cut Range("B:B")
End Sub
Copy (Cut) and Paste an Entire Row
This example copies or cuts and pastes an entire row, 1 over to 2:
Sub Paste_OneRow()
'Copy and Paste Row
Range("1:1").Copy Range("2:2")
'Cut and Paste Row
Range("1:1").Cut Range("2:2")
End Sub
Copy (Cut) and Paste to Another Worksheet or Workbook
Sub Paste_Other_Sheet_or_Book()
'Cut or Copy and Paste to another worksheet
Worksheets("sheet1").Range("A1").Copy Worksheets("sheet2").Range("B1") 'Copy
Worksheets("sheet1").Range("A1").Cut Worksheets("sheet2").Range("B1") 'Cut
'Cut or Copy and Paste to another workbook
Workbooks("book1.xlsm").Worksheets("sheet1").Range("A1").Copy _
Workbooks("book2.xlsm").Worksheets("sheet1").Range("B1") 'Copy
Workbooks("book1.xlsm").Worksheets("sheet1").Range("A1").Cut _
Workbooks("book2.xlsm").Worksheets("sheet1").Range("B1") 'Cut
Application.CutCopyMode = False
End Sub
Value Paste
Normally, when you Copy and Paste you Paste all the properties of a cell: formatting, formulas, etc.. Value Pasting allows you to Copy and Paste cells’ values and nothing else. The easiest way to Value Paste in VBA is to define the cell’s value directly:
Sub ValuePaste()
'Value Paste Cells
Range("B1").value = Range("A1").value
Range("B1:B3").value = Range("A1:A3").value
'Set Values Between Worksheets
Worksheets("sheet2").range("A1").value = Worksheets("sheet1").range("A1").value
'Set Values Between Workbooks
Workbooks("book2.xlsm").Worksheets("sheet1").range("A1").value = _
Workbooks("book1.xlsm").Worksheets("sheet1").range("A1").value
Application.CutCopyMode = False
End Sub
Paste Special
Paste Special allows you to Copy and Paste specific properties of cells (examples: formats, values, column widths, etc.). It also allows you to perform special paste operations (examples: skip blanks, transpose). We will look at several examples below, but for an in-depth read our tutorial on Value Pasting and Paste Special.
Sub PasteSpecial()
'Perform one Paste Special Operation:
Range("A1").Copy
'Paste Formats
Range("B1").PasteSpecial Paste:=xlPasteFormats
'Paste Column Widths
Range("B1").PasteSpecial Paste:=xlPasteColumnWidths
'Paste Formulas
Range("B1").PasteSpecial Paste:=xlPasteFormulas
'Perform Multiple Paste Special Operations at Once:
Range("A1").Copy
'Paste Formats and Transpose
Range("B1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
End Sub
Clear Clipboard
After Copying & Pasting you might want to clear the clipboard (we do in some of the code examples above). To clear the Excel clipboard, we set Application.CutCopyMode to False:
Application.CutCopyMode = False
This will clear Excel’s clipboard. However, it will not clear the Windows Clipboard. To clear the Window’s clipboard follow the instructions here.