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

VBA Wrap Text en Excel — haz que el texto largo encaje y la fila crezca con él

|

VBA Wrap Text en Excel — haz que el texto largo encaje y la fila crezca con él

TL;DRWrapText = True le dice a Excel que parta el texto largo en varias líneas dentro del ancho de la columna en vez de derramarlo sobre la celda siguiente. Reforma la celda — pero solo hace la fila más alta si el alto de fila sigue en automático. Si una macro (o una celda combinada) ha clavado un RowHeight explícito, el texto se ajusta de forma invisible y se queda recortado. Para ver de verdad el texto ajustado, haz el baile de tres pasos: fija un ancho de columna fijo, activa WrapText, y luego llama a Rows.AutoFit para que la fila crezca a la nueva forma.

' El ajuste reforma la celda; el alto de fila debe poder crecer para mostrarlo.
Columns("C").ColumnWidth = 40      ' 1) da al texto un ancho fijo contra el que ajustar
Range("C2:C100").WrapText = True   ' 2) parte el texto largo en varias lineas
Range("C2:C100").EntireRow.AutoFit ' 3) deja que las filas crezcan al texto ajustado

' Vuelve a desactivarlo:
Range("C2:C100").WrapText = False

WrapText es el gemelo en código del botón Ajustar texto de la pestaña Inicio. Sin él, una etiqueta larga simplemente se escapa hacia la derecha, oculta en cuanto la celda vecina tiene algo. Con él, la misma etiqueta se pliega en dos o tres líneas y se queda dentro de su columna. Eso es evidente desde el botón. Lo que el botón esconde — y lo que hace tropezar a cada macro que intenta automatizarlo — es que el ajuste está enredado con el alto de fila, y conseguir una salida legible significa tratar los dos juntos.

Lo que aprenderás

  • El modelo mental — WrapText reforma la celda; no cambia el texto
  • La regla que más importa — el ajuste solo hace crecer la fila cuando el alto está en automático
  • La secuencia de tres pasos que hace que el texto ajustado de verdad se vea (ancho, ajuste, AutoFit)
  • WrapText frente a un salto de línea duro (Chr(10) / Alt+Enter)
  • Leer WrapText de vuelta, y por qué un rango mixto devuelve Null
  • Qué columnas ajustar y cuáles dejar en paz

El modelo mental: reformar la celda, no editar el texto

Activar el ajuste no toca el valor de la celda. "North America regional summary" es la misma cadena antes y después; lo que cambia es cómo Excel la dispone. Desactivado, la cadena se dibuja en una línea que se desborda hacia la derecha hasta que una vecina la bloquea. Activado, Excel la pliega en líneas que encajan cada una en el ancho de la columna, apilándose hacia abajo. Piensa en WrapText como cambiar la forma de la caja en la que vive el texto — más estrecha y más alta — no el texto en sí.

Ese cambio de forma es toda la cuestión, y explica lo único que los principiantes pasan por alto: una caja más alta necesita una fila más alta para mostrar todas sus líneas. El ajuste y el alto de fila son dos mitades de la misma idea. No puedes cambiar uno e ignorar el otro y esperar que el resultado se vea bien.

La regla que más importa: el ajuste hace crecer la fila solo si el alto está libre

Aquí está el error detrás de casi todos los avisos de «puse WrapText pero no se ajusta nada». WrapText = True pliega el texto por dentro, pero la fila solo se hace más alta para revelar esas líneas extra si el alto de fila está en automático. Si algo ha fijado ya el alto, Excel conserva ese alto y recorta las líneas ajustadas fuera de la vista:

Rows(2).RowHeight = 15         ' una macro fijo el alto antes...
Range("C2").WrapText = True    ' el texto se ajusta dentro, pero la fila sigue a 15pt - recortado

Dos cosas suelen clavar el alto: una macro que fijó RowHeight a un número, y — la traicionera — una celda combinada, porque Rows.AutoFit se niega a redimensionar una fila que contiene una (ver AutoFit). El arreglo es dejar el alto en automático y que AutoFit lo mida, o, si de verdad necesitas celdas combinadas, calcular y fijar tú mismo el RowHeight. La regla para recordar: WrapText = True reforma la celda, pero algo todavía tiene que hacer la fila lo bastante alta para mostrarlo.

La secuencia de tres pasos que de verdad funciona

Como el ajuste y el alto están ligados, conseguir una salida legible es un movimiento ordenado de tres pasos — y el orden importa:

Columns("C").ColumnWidth = 40        ' 1) un ancho FIJO - el texto necesita algo contra lo que ajustar
Range("C2:C100").WrapText = True     ' 2) activa el ajuste de texto
Range("C2:C100").EntireRow.AutoFit   ' 3) crece las filas a la nueva forma ajustada

El paso uno es la parte que la gente se salta. El AutoFit de fila solo puede calcular un alto una vez que el ancho de columna está asentado — el texto tiene que saber cuán ancho se le permite ser antes de poder decidir cuántas líneas necesita. Si haces AutoFit del ancho de columna y del alto de fila, los dos pelean: ensanchar la columna deja que el texto encaje en menos líneas, lo que cambia el alto, y obtienes un resultado inestable. Así que fija primero el ancho (no le hagas AutoFit), luego ajusta, luego AutoFit del alto. Haz los tres en ese orden y la salida es correcta cada vez.

WrapText frente a un salto de línea duro

Hay dos formas distintas de que el texto acabe en varias líneas, y confundirlas causa desconcierto. WrapText es un ajuste blando, guiado por el ancho: Excel decide dónde partir según el ancho de la columna, y los saltos se mueven si redimensionas la columna. Un salto de línea duro es un carácter que pones tú mismo en la cadena — Chr(10) en VBA, o Alt+Enter a mano — que fuerza un salto en ese punto exacto sin importar el ancho:

Range("C2").Value = "Line one" & Chr(10) & "Line two"   ' un salto duro dentro del texto
Range("C2").WrapText = True                              ' necesario para que el salto duro SE VEA

La pega: incluso un salto duro Chr(10) solo se muestra como dos líneas cuando WrapText está activado — de lo contrario Excel muestra un pequeño glifo de caja o lo junta todo. Así que los dos trabajan juntos: usa Chr(10) cuando quieras un salto en un sitio concreto (un bloque de dirección, una etiqueta sobre un valor), y confía en el WrapText a secas cuando solo quieras que la prosa larga se pliegue para encajar.

Leer WrapText de vuelta, y el Null del rango mixto

WrapText es una propiedad por celda. Léela en una sola celda y obtienes True o False. Léela en un rango donde algunas celdas se ajustan y otras no, y Excel no puede dar una única respuesta, así que devuelve Null:

Debug.Print Range("C2").WrapText          ' True o False
Debug.Print Range("C2:C100").WrapText     ' Null si el rango es mixto

Ese Null no es un error — es Excel diciéndote que el rango es inconsistente. Si necesitas comprobar si un rango está ajustado de forma uniforme, comprueba primero IsNull(rng.WrapText); un resultado no nulo significa que todas las celdas coinciden. En la práctica rara vez lo lees de vuelta — lo fijas sobre una columna entera de una vez, lo que mantiene el rango uniforme y esquiva la pregunta por completo.

Qué columnas ajustar

El ajuste se gana su sitio en las columnas de texto — descripciones, comentarios, direcciones, etiquetas largas — donde plegar mantiene la columna estrecha y la hoja legible. Suele ser un error en las columnas de números: un número ajustado es más difícil de leer, no más fácil, y los números rara vez lo necesitan. El hábito eficiente es fijar WrapText sobre la columna entera en una sola instrucción (Columns("C").WrapText = True) en vez de recorrer celda por celda, y luego hacer AutoFit de las filas una vez para todo el bloque. Fijarlo por celda en un bucle es más lento y una fuente habitual del Null de rango mixto de arriba. Decide por columna, aplica una vez, AutoFit una vez.

Cómo ayuda ExcelMaster

Ajustar texto es el ajuste que parece una línea única y luego produce una salida recortada que nadie nota hasta que se imprime el informe — el alto de fila se clavó antes, el ancho de columna nunca se fijó así que AutoFit midió la forma equivocada, o el salto duro Chr(10) nunca se ve porque el ajuste se quedó desactivado.

ExcelMaster te deja describir el resultado — «ajusta la columna de descripción y deja que las filas crezcan», «pon la dirección en tres líneas en esta celda» — y escribe los pasos en el orden correcto: primero un ancho de columna fijo, WrapText sobre la columna entera, luego Rows.AutoFit, con Chr(10) donde pediste un salto duro y el ajuste activado para que se vea. Señala las celdas combinadas que impedirán que la fila crezca. Tú conservas el libro y el código.

Preguntas frecuentes

¿Por qué no funciona mi WrapText en VBA?

El texto casi con seguridad se está ajustando — solo que no se ve, porque el alto de fila está fijo. El alto de fila solo crece para revelar las líneas ajustadas cuando está en automático. Deja el alto en paz y llama a Rows.AutoFit después de fijar WrapText = True, y asegúrate de que la columna tenga primero un ancho fijo para que el texto tenga algo contra lo que ajustar. Si la celda está combinada, el AutoFit de fila no la redimensionará en absoluto — fija el RowHeight explícitamente.

¿Cómo ajusto texto y hago AutoFit del alto de fila en VBA?

Haz tres pasos en orden: fija un ancho de columna fijo (Columns("C").ColumnWidth = 40), activa el ajuste (Range("C2:C100").WrapText = True), luego haz AutoFit de las filas (Range("C2:C100").EntireRow.AutoFit). Fijar primero el ancho importa — el AutoFit de fila solo puede medir el alto necesario una vez que el texto sabe cuán ancho se le permite ser.

¿Cómo desactivo el ajuste de texto en VBA?

Fija la propiedad a False: Range("C2:C100").WrapText = False. Si las filas se agrandaron para encajar el texto ajustado, no encogerán solas — llama a Rows.AutoFit de nuevo después, o fija un RowHeight explícito, para devolverlas a un alto de una sola línea.

¿Cuál es la diferencia entre WrapText y un salto de línea Chr(10)?

WrapText es un ajuste blando, guiado por el ancho — Excel elige dónde partir según el ancho de la columna, y los saltos se mueven cuando redimensionas. Chr(10) (lo mismo que Alt+Enter) es un salto duro que colocas dentro de la cadena en un punto exacto. Un salto duro solo se muestra como varias líneas cuando WrapText también está activado, así que los dos suelen usarse juntos.

¿Por qué Range.WrapText devuelve Null?

Porque WrapText es una propiedad por celda y el rango es mixto — algunas celdas se ajustan y otras no, así que Excel no puede devolver un único True o False y da Null en su lugar. Léela en una sola celda para una respuesta definida, o comprueba IsNull(rng.WrapText) para ver si un rango entero es uniforme. Fijar WrapText sobre la columna entera de una vez lo mantiene consistente.

Probado en

Probado en: Excel 365 (Windows 11), VBA 7.1 — última verificación el 10/09/2026.

Guías relacionadas: VBA AutoFit · VBA Inmovilizar paneles · VBA Ancho de columna · VBA Combinar celdas · VBA Font