TL;DR — Pegar valores sustituye una fórmula viva por el número que muestra en ese momento. Ese número queda entonces por su cuenta: puedes borrar las celdas a las que hacía referencia, el libro deja de recalcularlo, y los vínculos externos se callan. La receta con portapapeles es
.Copyy luegoPasteSpecial Paste:=xlPasteValues— pero elxlPasteValuesa secas descarta el formato de número, así que las fechas vuelven como series tipo45000. UsaxlPasteValuesAndNumberFormatscuando la visualización importe, y para una congelación simple sin portapapeles alguno,dst.Value = src.Value.
' Congela un rango de formulas en sus resultados, conservando la visualizacion:
src.Copy
src.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
' El equivalente sin portapapeles para solo valores (pierde los formatos de numero):
dst.Value = src.Value
Una fórmula es una promesa de recalcular: =Sheet2!A1*1.1 no es un número, es una
instrucción que se vuelve a ejecutar cada vez que cambia Sheet2!A1. La mayoría de las
veces es exactamente lo que quieres. Pero a veces necesitas que la respuesta deje de
ser una promesa y se convierta en un hecho — un mes que estás archivando, una
instantánea que vas a enviar por correo, una fórmula volátil que quieres que deje de dar
vueltas. Eso es lo que hace pegar valores. Es el rincón más buscado de
PasteSpecial, y tiene una trampa que vale la pena conocer
antes de usarlo.
Lo que aprenderás
- El modelo mental — pegar valores convierte una promesa de recalcular en un número plano
- La regla que salva datos — congela antes de borrar el origen, no después
- La trampa del formato —
xlPasteValueselimina el formato de número y las fechas se vuelven series - Los tres trabajos reales — archivar un resultado, frenar volátiles, romper vínculos externos
- El atajo sin portapapeles —
dst.Value = src.Value - Cuándo no congelar, porque una fórmula está haciendo su trabajo
El modelo mental: una instantánea, no un vínculo
Una fórmula vincula una celda a sus entradas. Pegar valores corta ese vínculo y deja
atrás el número que se mostraba en el momento en que lo hiciste — una instantánea. Los
píxeles se ven idénticos; el comportamiento es completamente distinto. Antes, la celda
era =A1+A2 y seguiría a A1 y A2 para siempre. Después, la celda es el literal 350, y
A1 y A2 pueden cambiar, moverse o desaparecer sin que ella se entere.
Esa única distinción — vínculo frente a instantánea — es toda la decisión. Si te preguntas «¿este número todavía necesita seguir a sus entradas?», la respuesta te dice si dejar la fórmula o congelarla. Pegar valores es tu forma de responder «no, este resultado ya es definitivo».
La regla que más importa: congela antes de borrar el origen
Aquí está el error que destruye datos. Construyes un informe con fórmulas que hacen
referencia a una hoja de datos en bruto, y luego borras esa hoja para aligerar el
archivo — y cada fórmula colapsa en #REF!, porque las celdas a las que apuntaban ya no
existen:
dst.Formula = "=RawData!A1 * 1.1" ' un vinculo vivo a otra hoja
Worksheets("RawData").Delete ' el origen desaparece...
' dst ahora muestra #REF! - el numero se perdio
La solución es el orden: congela los resultados en valores primero, luego borra el
origen. Una vez que dst.PasteSpecial Paste:=xlPasteValues se ha ejecutado, la celda
contiene un número real que no le debe nada a RawData, así que borrar la hoja es
seguro. La regla se generaliza: cada vez que estés a punto de quitar, sobrescribir o
mover las celdas de las que depende una fórmula, pega valores primero. Un #REF! no
se puede deshacer una vez que el archivo se ha guardado y cerrado.
La trampa del formato: solo valores elimina el formato de número
Esta es la sorpresa que hace que la gente vuelva a buscar. xlPasteValues copia el
valor — y un valor en Excel es un número desnudo. Una fecha se almacena como un
número de serie (días desde 1900), la moneda como un número plano, un porcentaje como
un decimal. El formato de número de la fórmula es lo que los mostraba como
2026-03-15, $1,200 y 35%. Pega solo valores y ese formato se queda atrás:
src.Copy
src.PasteSpecial Paste:=xlPasteValues ' 2026-03-15 se convierte en 46091
src.PasteSpecial Paste:=xlPasteValuesAndNumberFormats ' 2026-03-15 se queda en 2026-03-15
Así que la opción honesta por defecto para cualquier cosa que lea una persona es
xlPasteValuesAndNumberFormats, que lleva el formato de visualización junto con el
número. Recurre al xlPasteValues a secas solo cuando de verdad quieras los números
subyacentes en bruto — para alimentar un cálculo, exportar a un sistema que reformatea
de todos modos.
Tres trabajos que de verdad hace pegar valores
Congelar fórmulas no es una tarea sino tres, y nombrarlas te dice cuándo hacerlo:
- Archivar un resultado. Un resumen mensual calculado a partir de los datos de este mes no debería cambiar cuando lleguen los datos del mes siguiente. Congélalo y el número es del mes, para siempre.
- Frenar fórmulas volátiles.
NOW(),RAND(),TODAY()yOFFSET()se recalculan en cada edición, lo cual es ruido una vez que ya tienes el valor que querías. Pegar valores las fija. - Romper vínculos externos. Un libro lleno de
=[Budget.xlsx]Sheet1!A1molesta a cada destinatario con un aviso de actualización. Congela esas celdas y el archivo lleva sus números sin vínculos que perseguir.
Los tres son la misma operación con intenciones distintas, y los tres son inseguros si borras el origen primero — congela y después retira.
El atajo sin portapapeles: dst.Value = src.Value
Si todo lo que quieres son valores — sin formatos, sin operación, sin transposición — no
necesitas el portapapeles en absoluto. Asignar el .Value de un rango a otro escribe
los números directamente:
dst.Value = src.Value ' solo valores, instantaneo, nunca toca el portapapeles
Esta es la forma más rápida de congelar en su sitio — rng.Value = rng.Value
sobrescribe las fórmulas de un rango con sus propios resultados en una línea — y esquiva
cada modo de fallo del portapapeles de PasteSpecial. Su
único límite es que mueve solo valores: sin formatos de número, así que usa
PasteSpecial Paste:=xlPasteValuesAndNumberFormats cuando la visualización tenga que
sobrevivir, y consulta Copy Destination para el
panorama completo de copiar sin el portapapeles.
Cuándo no congelar
Congelar es destructivo — estás desechando una fórmula. No lo hagas con una celda cuyo número debería seguir rastreando sus entradas: un total acumulado, un resumen vinculado, un modelo cuyo sentido entero es recalcular cuando cambian los supuestos. Si congelas esas, el siguiente lector edita una entrada y el «total» deja de moverse en silencio, lo cual es peor que cualquier retraso de recálculo. Congela un resultado que ya es definitivo; deja una fórmula que todavía está trabajando. En caso de duda, congela una copia en una hoja de instantánea y mantén las fórmulas vivas donde están.
Cómo ayuda ExcelMaster
Pegar valores es una idea de una línea con dos formas de perder datos: congelar después
de borrar el origen y te da #REF!; usar xlPasteValues a secas en fechas y le envías
a alguien por correo una columna de 45000. Ambas compilan, ambas se ejecutan, y ambas
parecen correctas hasta que ya es tarde para arreglarlas.
ExcelMaster te
deja decir lo que quieres — «congela los números de este mes», «convierte estas
fórmulas en valores pero conserva las fechas», «rompe los vínculos antes de enviarlo» —
y ordena los pasos de forma segura (congelar primero, borrar después), elige
xlPasteValuesAndNumberFormats cuando una persona vaya a leer el resultado, y usa
dst.Value = src.Value cuando no hace falta el portapapeles. Tú conservas el libro y el
código.
Preguntas frecuentes
¿Cómo convierto fórmulas en valores en VBA?
Congélalas en su sitio: rng.Value = rng.Value sobrescribe cada fórmula con el número
que produce en ese momento, en una línea y sin portapapeles. Si necesitas conservar el
formato de visualización en fechas o moneda, usa la forma con portapapeles en su lugar —
rng.Copy y luego rng.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, seguido de
Application.CutCopyMode = False.
¿Por qué mis fechas se convirtieron en números después de pegar valores?
Porque xlPasteValues pega el valor sin el formato de número, y el valor subyacente de
una fecha es un número de serie como 45000. El formato era lo que la mostraba como
fecha. Usa xlPasteValuesAndNumberFormats para que el formato de visualización viaje
también, y las fechas sigan siendo fechas.
¿Cómo detengo una fórmula para que no se recalcule sin borrarla?
Sustitúyela por su resultado — pega valores. Copia las celdas y usa
PasteSpecial Paste:=xlPasteValuesAndNumberFormats, o usa rng.Value = rng.Value. Es
la solución habitual para fórmulas volátiles como NOW(), RAND() y OFFSET() que
siguen cambiando en cada edición: una vez congelado, el número queda fijo.
¿Pegar valores evita que se rompan mis fórmulas si borro la hoja de origen?
Evita justo eso — siempre que congeles primero. Si una fórmula hace referencia a otra
hoja y borras esa hoja, la fórmula se convierte en #REF! y el número se pierde. Pega
valores antes de borrar, para que la celda contenga un número real que ya no dependa
del origen.
¿Cuál es la diferencia entre .Value y .Value2 al congelar?
.Value devuelve fechas y moneda como sus tipos con formato, mientras que .Value2
devuelve el número subyacente en bruto (una fecha como su serie). Para una congelación
simple, rng.Value = rng.Value va bien; usa .Value2 solo cuando de verdad quieras las
series en bruto sin tipado de moneda o fecha — consulta
VBA Value2 para la distinción.
Probado en
Probado en: Excel 365 (Windows 11), VBA 7.1 — última verificación el 09/09/2026.
Guías relacionadas: VBA PasteSpecial · VBA Copy Destination · VBA Copiar y pegar · VBA Formula · VBA Value2
