🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

VBA Cut en Excel — Range.Cut, Cut frente a Copy, y las dos formas de soltar lo que cortas

|

VBA Cut en Excel — Range.Cut, Cut frente a Copy, y las dos formas de soltar lo que cortas

TL;DRRange.Cut levanta 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 de dest y lo sobrescribe, mientras que rng.Cut y luego dest.Insert abre un hueco y desplaza las celdas a un lado, así que no se pierde nada. Cut además mueve —vacía el origen— donde Copy duplica. Limpia el portapapeles con Application.CutCopyMode = False cuando 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

  • Cut frente a Copy —mover vacía el origen, copiar lo deja en su sitio—
  • Los dos consumidores de un corte — Destination:= / pegar sobrescribe, Insert desplaza
  • Por qué importa Application.CutCopyMode = False, y qué son en realidad las hormigas en marcha
  • Por qué Cut rechaza un rango de varias áreas (Union) cuando Copy a 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