TL;DR —
Range.Cutlevanta las celdas al portapapeles en modo cortar. Luego las sueltas, y hay exactamente dos formas que hacen lo contrario:rng.Cut Destination:=dest(un pegado) deja las celdas encima dedesty lo sobrescribe, mientras querng.Cuty luegodest.Insertabre un hueco y desplaza las celdas a un lado, así que no se pierde nada.Cutademás mueve —vacía el origen— dondeCopyduplica. Limpia el portapapeles conApplication.CutCopyMode = Falsecuando termines.
Sub CutBasics()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Data")
ws.Range("A2:D2").Cut ' levanta las celdas de la fila (hormigas en marcha)
ws.Range("A10").Insert Shift:=xlDown ' INSERTA las celdas cortadas - desplaza, no sobrescribe
Application.CutCopyMode = False ' guarda el estado del portapapeles
End Sub
Cut es el verbo que hay debajo de mover filas y
mover columnas. Entiende qué pone en el portapapeles y las dos formas de
sacarlo, y todo movimiento construido sobre él se comporta de forma predecible.
Lo que aprenderás
Cutfrente aCopy—mover vacía el origen, copiar lo deja en su sitio—- Los dos consumidores de un corte —
Destination:=/ pegar sobrescribe,Insertdesplaza - Por qué importa
Application.CutCopyMode = False, y qué son en realidad las hormigas en marcha - Por qué
Cutrechaza un rango de varias áreas (Union) cuandoCopya veces lo tolera - Por qué una fórmula que apunta a celdas cortadas las sigue, a diferencia de un delete que la rompe
Cut mueve; Copy duplica
La diferencia de una sola palabra está en cómo queda el origen cuando terminas. Copy deja el origen
exactamente donde estaba —ahora tienes dos copias—. Cut quita el origen una vez que las celdas caen en
algún sitio —tienes una, en un lugar nuevo—:
ws.Range("A2:D2").Copy ws.Range("A20") ' A2:D2 SE QUEDA, A20 recibe un duplicado
ws.Range("A2:D2").Cut ws.Range("A20") ' A2:D2 SE VACIA, A20 recibe los originales
Así que Cut es para mover y Copy es para duplicar. Recurrir a Copy para mover —copiar y luego
eliminar el origen a mano— es una fuente clásica de movimientos a medias, donde la copia cae pero la
eliminación se olvida o borra el rango equivocado. Si el objetivo es mover, corta.
Las dos formas de soltar lo que cortas
Una vez que las celdas están en el portapapeles en modo cortar, cómo las sueltas decide si los datos
sobreviven. Cut levanta las celdas; hay dos formas de soltarlas que hacen lo contrario, y estas dos
líneas se parecen pero hacen lo opuesto:
ws.Range("A2:D2").Cut Destination:=ws.Range("A10") ' PEGAR - cae sobre A10:D10, lo sobrescribe
ws.Range("A2:D2").Cut
ws.Range("A10").Insert Shift:=xlDown ' INSERTAR - abre un hueco en A10, desplaza hacia abajo
Cut Destination:= (y un .Cut manual seguido de .Paste) es un pegado: las celdas cortadas caen
encima del destino y sobrescriben lo que hubiera allí. .Insert después de un .Cut es un insertar
celdas cortadas: el destino y todo lo que hay a partir de él se corren a un lado para hacer sitio, y no
se sobrescribe nada. Elige pegar cuando el destino está vacío y quieres que las celdas caigan exactamente
ahí; elige insertar cuando estás encajando celdas entre otras —eso es lo que es un movimiento—.
CutCopyMode y las hormigas en marcha
Después de un Range.Cut (o Copy) sin destino, Excel queda en un estado especial —el origen muestra un
borde de puntos que se arrastra, las «hormigas en marcha», y Excel espera a que pegues o insertes—. Ese
estado es Application.CutCopyMode, y dejarlo colgando es descuidado: lo siguiente que haga el usuario
puede disparar un pegado perdido, y pulsar Escape o editar una celda lo cancela de maneras que tu macro no
planeó.
ws.Range("A2:D2").Cut
ws.Range("A10").Insert Shift:=xlDown
Application.CutCopyMode = False ' cancela las hormigas en marcha, libera el portapapeles
Cut Destination:= y .Insert completan la operación y limpian el modo por ti, así que ahí la línea
extra es un cinturón y tirantes. Pero siempre que hagas .Cut o .Copy y luego otro trabajo antes de
pegar, termina con Application.CutCopyMode = False para no dejar nunca Excel a medio cortar.
Cut rechaza un rango de varias áreas
Cut funciona sobre un bloque contiguo. Pásale un rango de varias áreas —celdas unidas con Union, o
una multiselección como Range("A2:D2, A8:D8")— y lanza un error de ejecución, porque no hay un único
lugar razonable donde soltar dos bloques inconexos:
Union(ws.Range("A2:D2"), ws.Range("A8:D8")).Cut ' error de ejecucion - Cut necesita un solo bloque
Copy a veces es más indulgente con rangos de varias áreas de forma coincidente, otra razón por la que
cortar y copiar no son intercambiables. Para mover varias filas dispersas, córtalas e insértalas de un
bloque en un bloque (de abajo arriba cuando están apiladas) en vez de intentar cortarlas todas de golpe
—consulta mover filas—.
Cut arrastra las referencias; delete las rompe
Aquí está la propiedad que hace de cortar un movimiento seguro. Cuando cortas celdas, Excel reescribe
cada fórmula que apunta a ellas para que las referencias sigan a las celdas hasta su nuevo hogar:
=Data!B2 sigue leyendo el mismo valor después de cortar B2 a B40. Es exactamente lo contrario de
eliminar esas celdas, donde una fórmula que apunta dentro del rango eliminado
colapsa a =#REF! y se queda rota.
La razón es lo que significa cada verbo. Un corte reubica datos —los datos siguen existiendo, así que
sus referencias todavía tienen algo a lo que apuntar, y Excel las actualiza—. Un delete destruye datos
—no queda nada a lo que apuntar, así que las referencias se rompen—. Cuando quieres los mismos números en
un lugar nuevo con cada fórmula todavía funcionando, Cut es la herramienta; cuando quieres los números
fuera, cuenta con los #REF! y límpialos.
Cómo te ayuda ExcelMaster
Cut esconde tres bifurcaciones que fallan todas en silencio —mover o duplicar (cortar frente a copiar),
sobrescribir o desplazar (pegar frente a insertar), y terminado o a medio cortar (CutCopyMode)— más el
rango de varias áreas que da error de plano. Elige mal y acabas con filas de origen perdidas, un destino
sobrescrito, o un libro atascado en modo cortar.
ExcelMaster te deja decir la intención
—«mueve estas celdas debajo de los totales sin sobrescribir nada»— y corta en vez de copiar, inserta en
vez de pegar, ejecuta la operación de un rango contiguo en un rango contiguo, y limpia CutCopyMode
cuando termina. Tú conservas el libro y el código.
Preguntas frecuentes
¿Qué hace Range.Cut en VBA?
Range.Cut pone las celdas del rango en el portapapeles en modo cortar y muestra el borde de hormigas en
marcha. Por sí solo todavía no mueve nada —terminas el movimiento pegando (Cut Destination:=, que
sobrescribe el destino) o llamando a .Insert sobre el destino (que desplaza las celdas a un lado y las
conserva)—. Una vez que las celdas caen, el origen se vacía.
¿Cuál es la diferencia entre Cut y Copy en VBA?
Cut mueve —el origen se vacía después de que las celdas caen, así que acabas con una sola copia en un
lugar nuevo—. Copy duplica —el origen se queda y el destino recibe una segunda copia—. Usa Cut para
mover, Copy para duplicar; no uses copiar-y-luego-eliminar como movimiento, que es fácil dejar a medias.
¿Por qué debería poner Application.CutCopyMode = False?
Para cancelar el estado de portapapeles de las hormigas en marcha después de un corte o una copia. Dejarlo
activo invita a un pegado perdido en la siguiente pulsación y deja Excel esperando a mitad de operación.
Cut Destination:= y .Insert lo limpian automáticamente, pero pon Application.CutCopyMode = False tú
mismo siempre que hagas .Cut o .Copy y realices otro trabajo antes de pegar.
¿Por qué VBA lanza un error cuando corto un rango Union?
Porque Cut solo maneja un bloque contiguo. Un Union o una multiselección son varios bloques inconexos,
y no hay un único lugar donde soltarlos, así que Cut lanza un error de ejecución. En su lugar, corta e
inserta de un bloque en un bloque. (Copy a veces tolera mejor los rangos de varias áreas de forma
coincidente.)
¿Se rompen las referencias de las fórmulas cuando corto celdas?
No —las siguen—. Excel reescribe las fórmulas que referencian celdas cortadas para que apunten a la nueva
ubicación de las celdas, así que siguen leyendo los mismos datos. Esa es la diferencia con eliminar
celdas, que deja las referencias sin nada a lo que apuntar y las colapsa a #REF!.
Probado en
Probado en: Excel 365 (Windows 11), VBA 7.1 — última verificación el 17/09/2026.
Guías relacionadas: VBA Move Rows · VBA Move Columns · VBA Copy Paste · VBA PasteSpecial · VBA Delete Rows
