VBA throws Runtime Error 1004: “The information cannot be pasted because the copy area and the paste area are not the same size” when a .Paste or .PasteSpecial command attempts to transfer a source range into a destination range that has an incompatible shape or contains merged cells.
Quick Answer
To resolve this error, specify only the top-left cell of the destination range instead of selecting the entire target block, or unmerge any merged cells within the destination area. Changing
Range("A1:C10").PasteSpecialtoRange("A1").PasteSpecialeliminates dimension mismatches immediately.
Why Dimension Mismatches Occur
When copying and pasting in Excel, the destination range must follow strict dimensional rules:
- It must match the source dimensions exactly (e.g., copying a 3×5 block requires a 3×5 target), OR
- It must be defined as a single cell representing the top-left origin (e.g., cell
A1).
If your code explicitly defines a multi-cell destination area that does not align with the source range dimensions, Excel rejects the paste.
' Fails with Error 1004:
Worksheets("Sheet1").Range("A1:B5").Copy ' Size: 5 rows x 2 columns (10 cells)
Worksheets("Sheet2").Range("D1:D10").PasteSpecial xlPasteValues ' Size: 10 rows x 1 column
How to Fix the Error
Fix 1: Target the Top-Left Cell Only (Best Practice)
When using .PasteSpecial or the Destination parameter of .Copy, you never need to define the entire landing block. Excel automatically calculates the boundary based on the copied source.
Sub CopyValuesCorrectly()
Dim wsSource As Worksheet, wsDest As Worksheet
Set wsSource = ThisWorkbook.Worksheets("Data")
Set wsDest = ThisWorkbook.Worksheets("Report")
' Direct copy method:
wsSource.Range("A1:C50").Copy Destination:=wsDest.Range("A1")
' PasteSpecial method:
wsSource.Range("A1:C50").Copy
wsDest.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub
Fix 2: Remove Merged Cells in the Destination
Merged cells alter the structural geometry of the grid. If the copied range contains single cells, but the target destination contains cells merged together (such as B2:C2 merged), Excel cannot map individual source values into the merged partition.
- Symptom: Pasting to a single top-left cell still produces this exact 1004 message.
- Diagnosis: Check if any cells in the target area are merged:
If DestinationRange.MergeCells Then
MsgBox "Merged cells detected in paste target."
End If
- Resolution: Unmerge the destination range before pasting:
wsDest.Range("A1:Z100").UnMerge
wsSource.Range("A1:C50").Copy Destination:=wsDest.Range("A1")
If merged cells frequently disrupt your automated templates, read #N/A in Lookup Tables with Merged Cells and #SPILL! Error: The “Merged Cell” Blockage.
Fix 3: Direct Memory Transfer (Bypass the Clipboard)
If you only need to transfer raw values (not formats or formulas), skip .Copy and .Paste entirely. Assigning values directly between equal-sized arrays or ranges is faster and completely avoids clipboard size errors.
Sub DirectTransfer()
Dim wsSource As Worksheet, wsDest As Worksheet
Dim rowCount As Long, colCount As Long
Set wsSource = ThisWorkbook.Worksheets("Data")
Set wsDest = ThisWorkbook.Worksheets("Report")
rowCount = 50
colCount = 3
' Direct memory assignment:
wsDest.Range("A1").Resize(rowCount, colCount).Value = _
wsSource.Range("A1").Resize(rowCount, colCount).Value
End Sub