Excel: cómo se ajusta el texto en 1 celda combinada?

31/05/2006 - 13:01 por Nur | Informe spam
Como puedo hacer que la celda combinada se autoajuste a un texto?

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
31/05/2006 - 23:57 | Informe spam
hola, 'anonimo/a' "

Como puedo hacer que la celda combinada se autoajuste a un texto?



considerando que el ajuste de lineas al texto en el formato de celdas...
1) es 'aplicable' SOLO a entradas/cambios/... 'directos' en dicha/s celda/s [pero]...
2) NO es 'detectado' cuando el contenido de la celda cambia por formulas/funciones...
3) [creo que] solo nos queda buscar alternativas por codigo... aunque aun por codigo...
a) NO hay evento que 'detecte cambios' en celdas ->con formulas<-... excepto el '_calculate'
b) siempre y cuando definas variables ->estaticas<- que esten 'monitoreando' sus contenidos o...
c) 'detectes' [en el evento '_change'] si la/s celda/s modificada/s tiene/n 'algo que ver con...' [precedente/s]

el siguiente ejemplo 'supone' que en la celda 'A1' es donde escribes algun texto [obviamente largo]...
y que dicho texto lo 'jalas' a la celda 'C5' [la cual esta combinada con 2 o mas columnas a su derecha] :))
[tiene ya una 'cierta preparacion' por si necesitas ampliar los rangos 'de accion' del codigo] :))
[seguramente habra otras alternativas :)) es solo mientras comentas algun detalle 'faltante'] ;)

-> toma nota que se pierde el beneficio para: des-hacer... undo... ctrl+Z :-((

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

en el modulo de codigo de 'esa' hoja ==Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim General As String, Parcial As String
General = "a1"
Parcial = "c5"
If Intersect(Target, Range(General & "," & Parcial)) Is Nothing Then Exit Sub
If Not Intersect(Target, Range(General)) Is Nothing _
Then ReajusteDeCeldas Range(Parcial) _
Else ReajusteDeCeldas Intersect(Target, Range(Parcial))
End Sub
Private Sub ReajusteDeCeldas(ByVal Rango As Range)
Dim Celda As Range, AnchoTotal As Single, AnchoCelda As Single, _
Alto As Single, Comb As Byte, Col As Byte
For Each Celda In Rango
With Celda
AnchoTotal = 0
Comb = .MergeArea.Columns.Count
For Col = .Column To .Column + Comb - 1
AnchoTotal = AnchoTotal + .Columns(Col).ColumnWidth + 1
Next
AnchoCelda = .ColumnWidth
.UnMerge
.ColumnWidth = AnchoTotal
.EntireRow.AutoFit
Alto = .RowHeight
With .Resize(, Comb)
.Merge
.Columns(1).ColumnWidth = AnchoCelda
End With
.EntireRow.RowHeight = Alto
End With
Next
End Sub
Respuesta Responder a este mensaje
#2 Nur
01/06/2006 - 08:51 | Informe spam
Muchas gracias, es que soy "nueva" en ésto.

"Héctor Miguel" escribió:

hola, 'anonimo/a' "

> Como puedo hacer que la celda combinada se autoajuste a un texto?

considerando que el ajuste de lineas al texto en el formato de celdas...
1) es 'aplicable' SOLO a entradas/cambios/... 'directos' en dicha/s celda/s [pero]...
2) NO es 'detectado' cuando el contenido de la celda cambia por formulas/funciones...
3) [creo que] solo nos queda buscar alternativas por codigo... aunque aun por codigo...
a) NO hay evento que 'detecte cambios' en celdas ->con formulas<-... excepto el '_calculate'
b) siempre y cuando definas variables ->estaticas<- que esten 'monitoreando' sus contenidos o...
c) 'detectes' [en el evento '_change'] si la/s celda/s modificada/s tiene/n 'algo que ver con...' [precedente/s]

el siguiente ejemplo 'supone' que en la celda 'A1' es donde escribes algun texto [obviamente largo]...
y que dicho texto lo 'jalas' a la celda 'C5' [la cual esta combinada con 2 o mas columnas a su derecha] :))
[tiene ya una 'cierta preparacion' por si necesitas ampliar los rangos 'de accion' del codigo] :))
[seguramente habra otras alternativas :)) es solo mientras comentas algun detalle 'faltante'] ;)

-> toma nota que se pierde el beneficio para: des-hacer... undo... ctrl+Z :-((

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

en el modulo de codigo de 'esa' hoja ==> Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim General As String, Parcial As String
General = "a1"
Parcial = "c5"
If Intersect(Target, Range(General & "," & Parcial)) Is Nothing Then Exit Sub
If Not Intersect(Target, Range(General)) Is Nothing _
Then ReajusteDeCeldas Range(Parcial) _
Else ReajusteDeCeldas Intersect(Target, Range(Parcial))
End Sub
Private Sub ReajusteDeCeldas(ByVal Rango As Range)
Dim Celda As Range, AnchoTotal As Single, AnchoCelda As Single, _
Alto As Single, Comb As Byte, Col As Byte
For Each Celda In Rango
With Celda
AnchoTotal = 0
Comb = .MergeArea.Columns.Count
For Col = .Column To .Column + Comb - 1
AnchoTotal = AnchoTotal + .Columns(Col).ColumnWidth + 1
Next
AnchoCelda = .ColumnWidth
.UnMerge
.ColumnWidth = AnchoTotal
.EntireRow.AutoFit
Alto = .RowHeight
With .Resize(, Comb)
.Merge
.Columns(1).ColumnWidth = AnchoCelda
End With
.EntireRow.RowHeight = Alto
End With
Next
End Sub



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