TL;DR —
Range.Cutpicks cells up onto the clipboard in cut mode. Then you put them down, and there are exactly two ways that do opposite things:rng.Cut Destination:=dest(a paste) lands the cells on top ofdestand overwrites it, whilerng.Cutthendest.Insertopens a gap and shifts cells aside so nothing is lost.Cutalso moves — it empties the source — whereCopyduplicates. Clear the clipboard withApplication.CutCopyMode = Falsewhen you finish.
Sub CutBasics()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Data")
ws.Range("A2:D2").Cut ' pick the row's cells up (marching ants)
ws.Range("A10").Insert Shift:=xlDown ' INSERT the cut cells - shifts, does not overwrite
Application.CutCopyMode = False ' put the clipboard state away
End Sub
Cut is the verb under moving rows and moving columns.
Understand what it puts on the clipboard and the two ways to take it off, and every move built on it
behaves predictably.
What you'll learn
CutversusCopy— a move empties the source, a copy leaves it in place- The two consumers of a cut —
Destination:=/ paste overwrites,Insertshifts - Why
Application.CutCopyMode = Falsematters, and what the marching ants really are - Why
Cutrefuses a multi-area (Union) range whenCopysometimes tolerates it - Why a formula pointing at cut cells follows them, unlike a delete that breaks it
Cut moves; Copy duplicates
The one-word difference is what the source looks like when you are done. Copy leaves the source exactly
where it was — you now have two copies. Cut removes the source once the cells land somewhere — you have
one, in a new place:
ws.Range("A2:D2").Copy ws.Range("A20") ' A2:D2 STAYS, A20 gets a duplicate
ws.Range("A2:D2").Cut ws.Range("A20") ' A2:D2 is EMPTIED, A20 gets the originals
So Cut is for moving and Copy is for duplicating. Reaching for Copy to move — copy, then delete
the source by hand — is a classic source of half-done moves, where the copy lands but the delete is
forgotten or deletes the wrong range. If the goal is a move, cut.
The two ways to drop what you cut
Once cells are on the clipboard in cut mode, how you put them down decides whether data survives. These two lines look similar and do opposite things:
ws.Range("A2:D2").Cut Destination:=ws.Range("A10") ' PASTE - lands on A10:D10, overwrites it
ws.Range("A2:D2").Cut
ws.Range("A10").Insert Shift:=xlDown ' INSERT - opens a gap at A10, shifts down
Cut Destination:= (and a manual .Cut then .Paste) is a paste: the cut cells land on top of
the destination and overwrite whatever was there. .Insert after a .Cut is an insert cut cells: the
destination and everything past it shift aside to make room, and nothing is overwritten. Pick paste when
the target is empty and you want the cells to land exactly there; pick insert when you are slotting cells
between others — that is what a move is.
CutCopyMode and the marching ants
After Range.Cut (or Copy) with no destination, Excel is left in a special state — the source has a
crawling dashed border, the "marching ants," and Excel is waiting for you to paste or insert. That state
is Application.CutCopyMode, and leaving it hanging is untidy: the next thing the user does can trigger a
stray paste, and pressing Escape or editing a cell cancels it in ways your macro did not plan for.
ws.Range("A2:D2").Cut
ws.Range("A10").Insert Shift:=xlDown
Application.CutCopyMode = False ' cancel the marching ants, release the clipboard
Cut Destination:= and .Insert complete the operation and clear the mode for you, so the extra line is
belt-and-braces there. But any time you .Cut or .Copy and then do other work before pasting, finish
with Application.CutCopyMode = False so you never leave Excel mid-cut.
Cut refuses a multi-area range
Cut works on one contiguous block. Hand it a multi-area range — cells joined with Union, or a
multi-select like Range("A2:D2, A8:D8") — and it raises a run-time error, because there is no sensible
single place to drop two disconnected blocks:
Union(ws.Range("A2:D2"), ws.Range("A8:D8")).Cut ' run-time error - Cut needs one block
Copy is sometimes more forgiving with multi-area ranges of matching shape, which is another reason cut
and copy are not interchangeable. To move several scattered rows, cut and insert them one block at a time
(bottom-up when they are stacked) rather than trying to cut them all at once — see
moving rows.
Cut carries references; delete breaks them
Here is the property that makes cut a safe move. When you cut cells, Excel rewrites every formula that
points at them so the references follow the cells to their new home: =Data!B2 still reads the same value
after B2 is cut to B40. That is the exact opposite of deleting those cells,
where a formula pointing into the deleted range collapses to =#REF! and stays broken.
The reason is what each verb means. A cut relocates data — the data still exists, so its references
still have something to point at, and Excel updates them. A delete destroys data — there is nothing left
to point at, so the references break. When you want the same numbers in a new place with every formula
still working, Cut is the tool; when you want the numbers gone, expect the #REF!s and clean them up.
How ExcelMaster helps
Cut hides three forks that all fail silently — move or duplicate (cut versus copy), overwrite or shift
(paste versus insert), and finished or mid-cut (CutCopyMode) — plus the multi-area range that errors
outright. Choose wrong and you get lost source rows, an overwritten destination, or a workbook stuck in
cut mode.
ExcelMaster lets you say the intent —
"move these cells below the totals without overwriting anything" — and it cuts rather than copies,
inserts rather than pastes, blocks the operation one contiguous range at a time, and clears
CutCopyMode when it is done. You keep the workbook and the code.
Frequently asked questions
What does Range.Cut do in VBA?
Range.Cut places the range's cells on the clipboard in cut mode and shows the marching-ants border. On
its own it does not move anything yet — you finish the move by pasting (Cut Destination:=, which
overwrites the target) or by calling .Insert on the destination (which shifts cells aside and preserves
them). Once the cells land, the source is emptied.
What is the difference between Cut and Copy in VBA?
Cut moves — the source is emptied after the cells land, so you end with one copy in a new place. Copy
duplicates — the source stays and the destination gets a second copy. Use Cut to move, Copy to
duplicate; do not use copy-then-delete as a move, which is easy to leave half done.
Why should I set Application.CutCopyMode = False?
To cancel the marching-ants clipboard state after a cut or copy. Leaving it on invites a stray paste from
the next keystroke and leaves Excel waiting mid-operation. Cut Destination:= and .Insert clear it
automatically, but set Application.CutCopyMode = False yourself whenever you .Cut or .Copy and do
other work before pasting.
Why does VBA throw an error when I cut a Union range?
Because Cut only handles one contiguous block. A Union or multi-select is several disconnected blocks,
and there is no single place to drop them, so Cut raises a run-time error. Cut and insert one block at a
time instead. (Copy is sometimes more tolerant of matching-shape multi-area ranges.)
Do formula references break when I cut cells?
No — they follow. Excel rewrites formulas that reference cut cells to point at the cells' new location, so
they keep reading the same data. That is the difference from deleting cells, which leaves references with
nothing to point at and collapses them to #REF!.
Tested in
Tested in: Excel 365 (Windows 11), VBA 7.1 — last verified 2026-09-17.
Related guides: VBA Move Rows · VBA Move Columns · VBA Copy Paste · VBA PasteSpecial · VBA Delete Rows
