WordWrap solo para determinadas filas

29/05/2006 - 00:17 por klomkbock | Informe spam
Hola a todos

Estoy intentando, mediante codigo, que en las celdas que lo necesiten
porque el nº de caracteres exceda el ancho de la misma, me aplique un
retorno de carro (¿se dice asi?), pero que a la vez no me afecte a las
demas filas, o sea, no las ajuste al contenido, sino que las deje con un
alto minimo estipulado (bien por codigo bien por formato). El wordwrap lo
consigo sin problemas, estos surgen a la hora de mantener el alto de las
restantes filas. En la ayuda creo entender que no se puede aplicar
individualmente wordwrap a una sola fila, pero supongo que debe haber
alguna forma de engañar el hambre (aunque yo lo he intentado de varias
formas y no lo he conseguido). ¿quizas contando un nº determinado de
caracteres y usando vbCrLf o similar?

Si podeis echarme una mano os lo agradezco.

Un saludo y hasta pronto
Ivan

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
29/05/2006 - 04:05 | Informe spam
hola, Ivan !

[no se si te entiendo bien -?- pero hasta donde se]...

1) lo que no es posible [suponiendo que es lo que buscas] es:
-> modificar alto de fila y/o ancho de columna de una sola celda 'en especial'
-> SIN que se afecte 'al resto' de las celdas ['alto' en esa fila o 'ancho' en esa columna completas] -?-

2) si lo que necesitas es 'pasar' a la siguiente fila los caracteres 'excedentes' de una celda en particular...
-> sera necesario 'cortar' los caracteres restantes y pasarlos a su siguiente fila [pero]...
-> si 'esa' siguiente fila ya esta 'ocupada'... habria que ir insertando filas nuevas [y revisar que pasa en las otras columnas] -?-

3) ademas, tomar en cuenta que el numero de carcteres que 'caben' en el ancho de una columna [generalmente]...
lo establece el tipo de letra que aplica el estilo 'normal' en uso [segun hoja/libro de que se trate] etc. etc. etc. :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ consulta original __
Estoy intentando, mediante codigo, que en las celdas que lo necesiten porque el no. de caracteres exceda el ancho de la misma
me aplique un retorno de carro (se dice asi?), pero que a la vez no me afecte a las demas filas, o sea, no las ajuste al contenido
sino que las deje con un alto minimo estipulado (bien por codigo bien por formato).
El wordwrap lo consigo sin problemas, estos surgen a la hora de mantener el alto de las restantes filas.
En la ayuda creo entender que no se puede aplicar individualmente wordwrap a una sola fila
pero supongo que debe haber alguna forma de enga#ar el hambre (aunque yo lo he intentado de varias formas y no lo he conseguido).
quizas contando un no. determinado de caracteres y usando vbCrLf o similar?...
Respuesta Responder a este mensaje
#2 klomkbock
29/05/2006 - 16:09 | Informe spam
Hola Hector Miguel, creo que voy a tener que hacer algo parecido a un
bucle infinito para poder agradecerte tu ayuda.

[no se si te entiendo bien -?- pero hasta donde se]...



La verdad es que yo tampoco tengo muy clara la duda, pero creo que ronda
tu siguiente comentario:

1) lo que no es posible [suponiendo que es lo que buscas] es:
-> modificar alto de fila y/o ancho de columna de una sola celda 'en


especial'
-> SIN que se afecte 'al resto' de las celdas ['alto' en esa fila o


'ancho' en esa columna completas] -?-

He estado intentando por codigo conseguir que a determinadas columnas me
aplicara wordwrap y a otras autofit, pero siempre me ajusta el alto de
fila aunque no sea necesario, con lo que las celdas a las que se aplica
wordwrap, quedan bien pero las otras quedan con un alto de fila minimo,
que (sobre todo visualmente) quedan un poco incomodas, aparte de nada
esteticas. No recuerdo exactamente las instrucciones que use en su
momento, aunque hice bastantes pruebas. Voy a volver a intentarlo y te
comento el resultado.

Un saludo y hasta pronto.
Ivan
Respuesta Responder a este mensaje
#3 klomkbock
29/05/2006 - 22:34 | Informe spam
Hola de nuevo, Hector Miguel.

Lo primero reconocer mi metedura de pata por referirme a la propiedad
WrapText llamandola WordWrap, supongo que los dichosos formularios me
tienen mareado.

Lo segundo, creo que ya lo he solucionado (aunque lo he probado poco) con
algo parecido al codigo que expongo a continuacion (lo curioso es que
estoy seguro de que en mis anteriores pruebas intente algo similar y me
daba error).
A falta de mayores comprobaciones y de adecuarlo a su destino este es el
codigo:

Sub PruebaFormatoWrapText()
Dim Celda As Range
With ActiveSheet
.Columns("a:a").WrapText = True
.Columns("h:h").WrapText = True
.Rows.AutoFit
For Each Celda In .Range(.Range("a2"), .Range("a65536").End(xlUp))
With Celda ' 20 es una medida aleatoria, solo debe ser menor que
'lo que abulten dos renglones.
If .RowHeight < 20 Or .Offset(0, 7).RowHeight < 20 Then
.RowHeight = 20
Else
.RowHeight = .RowHeight
End If
End With
Next
End With
End Sub

Solo aclarar un poco la consulta. Como tu comentas se trata de variar el
alto de fila dependiendo del contenido de determinados campos, cuando en
estos el texto excede el ancho de celda para permitir verlo en varios
renglones. Pero no quiero que en las que no hace falta tambien me ajuste
el alto (me refiero a las otras filas, no a las celdas de la misma fila,
que esta claro que no hay mas remedio)

Si puedes comentarme como lo ves te lo agradezco. Mientras voy a seguir
probandolo, a ver si realmente funciona.

Un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#4 klomkbock
29/05/2006 - 23:46 | Informe spam
Como ya he dicho por ahi, debe parecer que me gusta poner ristras de
mensajes, pero me temo que lo que me pierde es la precipitacion.

El mismo codigo creo que un poco mejorado, o al memos simplificado y sin
una redundancia

Sub PruebaFormatoWordwrap1()
Dim Celda As Range
Application.ScreenUpdating = False
With ActiveSheet
.Columns("a:a").WrapText = True
.Columns("h:h").WrapText = True
.Rows.AutoFit
'' esta instrucion hace que la fila de titulos no sea demasiado "baja"
'' pero la deja un poco mas baja que las otras. Es prescindible.
.Range("a1").RowHeight = 18
For Each Celda In .Range(.Range("a2"), .Range("a65536").End(xlUp))
With Celda
If .RowHeight < 24 Then .RowHeight = 24
End With
Next
End With
Application.ScreenUpdating = True
End Sub

Un saludo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida