Auto ajustar texto

16/01/2006 - 12:29 por Alejandro | Informe spam
Que tal.. tengo un libro en el cual relleno algunos datos en la 1º hoja y
automáticamente me llena en otras hojas lo mismo. Lo que me gustaría es que
automáticamente me ajuste el tamaño de la fila (no de la columna) para que
se vea todo el texto en todas las hojas. Ya seleccioné la celda y en formato
de celdas marqué Ajustar Texto, pero no lo hace automáticamente. Por ello
tengo q ir a cada hoja y darle doble click a la parte inferior del
encabezado de fila para q me ajuste. Cómo lo puedo hacer automáticamente???
Muchas gracias

Preguntas similare

Leer las respuestas

#11 KL
19/01/2006 - 21:24 | Informe spam
Hola Alejandro,

Prueba este codigo. Cosas a tener en cuenta:

1) se ajustara el alto de la fila basandose en el primer rango combinado seleccionado. O sea, no se tomaran en cuenta otros rangos
combinados de la misma fila
2) la celda seleccionada (o la celda activa del rango seleccionado) debe ser parte de un rango combinado para que se ajuste. O sea
si seleccionas toda la fila y la celda en la 1a columna no es combinada, no ocurrira nada.
3) la celda seleccionada (o la celda activa del rango seleccionado) debe estar en exactamente la misma posicion en todas las hojas.
Solo se ajustaran celdas donde se cumpla esta condicion.
4) para hacer el ajuste en varias hojas hay que seleccionarlas/agruparlas
5) el procedimiento que hay que usar (asignar a un boton o un atajo de teclas) es el segundo (se llama
"EjecutarEnHojasSeleccionadas")

Saludos,
KL

Sub AutoFitMergedCellRowHeight(myActiveCell As Range)
Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range, iX As Integer
Dim ActiveCellWidth As Single, PossNewRowHeight As Single
If myActiveCell.MergeCells Then
With myActiveCell.MergeArea
.WrapText = True
If .Rows.Count = 1 And .WrapText = True Then
Application.ScreenUpdating = False
CurrentRowHeight = .RowHeight
ActiveCellWidth = myActiveCell.ColumnWidth
For Each CurrCell In myActiveCell.MergeArea
MergedCellRgWidth = CurrCell.ColumnWidth + _
MergedCellRgWidth
iX = iX + 1
Next
MergedCellRgWidth = MergedCellRgWidth + (iX - 1) * 0.71
.MergeCells = False
.Cells(1).ColumnWidth = MergedCellRgWidth
.EntireRow.AutoFit
PossNewRowHeight = .RowHeight
.Cells(1).ColumnWidth = ActiveCellWidth
.MergeCells = True
.RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
CurrentRowHeight, PossNewRowHeight)
End If
End With
End If
End Sub

Sub EjecutarEnHojasSeleccionadas()
Dim ws As Worksheet
For Each ws In ActiveWindow.SelectedSheets
AutoFitMergedCellRowHeight ws.Range(ActiveCell.Address)
Next ws
End Sub
Respuesta Responder a este mensaje
#12 Alejandro
20/01/2006 - 12:33 | Informe spam
Disculpa KL pero no lo puedo hacer funcionar, ademas como te comentaba la
idea era q no utilizara un boton ni un atajo, paso a explicarte: tengo una
Hoja llamada "Menu", en la celda (sin combinar) D12 escribo el concepto de
una factura, esta marcado autoajustar por lo que cuando le doy "Enter" se
justifica automaticamente, hasta ahi todo bien. ademas tengo 2 hojas
llamadas "XX" e "YY"; en la "XX" tengo pegado el vinculo de Menu!D12 a la
celda D17 que esta combinada con E y F, aclaro q las celdas A, B y C de la
fila 17 no estan combinadas. Lo mismo en la hoja "YY" pero en la fila 19. Mi
idea es que cuando yo escribo el concepto en Menu!, Automaticamente me
ajuste cuando me pega en las hojas "XX" e "YY", sin botones ni atajos del
teclado. Espero que me comprendas. Disculpa nuevamente la molestia. Muchas
gracias



"KL" escribio en el mensaje
news:
Hola Alejandro,

Prueba este codigo. Cosas a tener en cuenta:

1) se ajustara el alto de la fila basandose en el primer rango combinado
seleccionado. O sea, no se tomaran en cuenta otros rangos combinados de la
misma fila
2) la celda seleccionada (o la celda activa del rango seleccionado) debe
ser parte de un rango combinado para que se ajuste. O sea si seleccionas
toda la fila y la celda en la 1a columna no es combinada, no ocurrira
nada.
3) la celda seleccionada (o la celda activa del rango seleccionado) debe
estar en exactamente la misma posicion en todas las hojas. Solo se
ajustaran celdas donde se cumpla esta condicion.
4) para hacer el ajuste en varias hojas hay que seleccionarlas/agruparlas
5) el procedimiento que hay que usar (asignar a un boton o un atajo de
teclas) es el segundo (se llama "EjecutarEnHojasSeleccionadas")

Saludos,
KL

Sub AutoFitMergedCellRowHeight(myActiveCell As Range)
Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range, iX As Integer
Dim ActiveCellWidth As Single, PossNewRowHeight As Single
If myActiveCell.MergeCells Then
With myActiveCell.MergeArea
.WrapText = True
If .Rows.Count = 1 And .WrapText = True Then
Application.ScreenUpdating = False
CurrentRowHeight = .RowHeight
ActiveCellWidth = myActiveCell.ColumnWidth
For Each CurrCell In myActiveCell.MergeArea
MergedCellRgWidth = CurrCell.ColumnWidth + _
MergedCellRgWidth
iX = iX + 1
Next
MergedCellRgWidth = MergedCellRgWidth + (iX - 1) * 0.71
.MergeCells = False
.Cells(1).ColumnWidth = MergedCellRgWidth
.EntireRow.AutoFit
PossNewRowHeight = .RowHeight
.Cells(1).ColumnWidth = ActiveCellWidth
.MergeCells = True
.RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
CurrentRowHeight, PossNewRowHeight)
End If
End With
End If
End Sub

Sub EjecutarEnHojasSeleccionadas()
Dim ws As Worksheet
For Each ws In ActiveWindow.SelectedSheets
AutoFitMergedCellRowHeight ws.Range(ActiveCell.Address)
Next ws
End Sub

Respuesta Responder a este mensaje
#13 KL
20/01/2006 - 12:58 | Informe spam
Hola Alejandro,

El codigo funciona solo si seleccionas una celda combinada que esta situada identicamente en todas las hojas seleccionadas (en tu
caso habria que seleccionar las celdas combinadas y ejkecutar el codigo consecutivamente en cada una de las dos hojas ya que no
estan en la misma fila). Por lo que creo que solo te queda la opcion que recomiendan casi todos los 'gurus' de Excel que yo conozca
y es muy simple "STAY AWAY FROM MERGED CELLS!!!" en otras palabras descombinalas ya que las ventajas son menores que los
inconvenientes.

Saludos,
KL


"Alejandro" wrote in message news:
Disculpa KL pero no lo puedo hacer funcionar, ademas como te comentaba la idea era q no utilizara un boton ni un atajo, paso a
explicarte: tengo una Hoja llamada "Menu", en la celda (sin combinar) D12 escribo el concepto de una factura, esta marcado
autoajustar por lo que cuando le doy "Enter" se justifica automaticamente, hasta ahi todo bien. ademas tengo 2 hojas llamadas "XX"
e "YY"; en la "XX" tengo pegado el vinculo de Menu!D12 a la celda D17 que esta combinada con E y F, aclaro q las celdas A, B y C
de la fila 17 no estan combinadas. Lo mismo en la hoja "YY" pero en la fila 19. Mi idea es que cuando yo escribo el concepto en
Menu!, Automaticamente me ajuste cuando me pega en las hojas "XX" e "YY", sin botones ni atajos del teclado. Espero que me
comprendas. Disculpa nuevamente la molestia. Muchas gracias



"KL" escribio en el mensaje news:
Hola Alejandro,

Prueba este codigo. Cosas a tener en cuenta:

1) se ajustara el alto de la fila basandose en el primer rango combinado seleccionado. O sea, no se tomaran en cuenta otros
rangos combinados de la misma fila
2) la celda seleccionada (o la celda activa del rango seleccionado) debe ser parte de un rango combinado para que se ajuste. O
sea si seleccionas toda la fila y la celda en la 1a columna no es combinada, no ocurrira nada.
3) la celda seleccionada (o la celda activa del rango seleccionado) debe estar en exactamente la misma posicion en todas las
hojas. Solo se ajustaran celdas donde se cumpla esta condicion.
4) para hacer el ajuste en varias hojas hay que seleccionarlas/agruparlas
5) el procedimiento que hay que usar (asignar a un boton o un atajo de teclas) es el segundo (se llama
"EjecutarEnHojasSeleccionadas")

Saludos,
KL

Sub AutoFitMergedCellRowHeight(myActiveCell As Range)
Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range, iX As Integer
Dim ActiveCellWidth As Single, PossNewRowHeight As Single
If myActiveCell.MergeCells Then
With myActiveCell.MergeArea
.WrapText = True
If .Rows.Count = 1 And .WrapText = True Then
Application.ScreenUpdating = False
CurrentRowHeight = .RowHeight
ActiveCellWidth = myActiveCell.ColumnWidth
For Each CurrCell In myActiveCell.MergeArea
MergedCellRgWidth = CurrCell.ColumnWidth + _
MergedCellRgWidth
iX = iX + 1
Next
MergedCellRgWidth = MergedCellRgWidth + (iX - 1) * 0.71
.MergeCells = False
.Cells(1).ColumnWidth = MergedCellRgWidth
.EntireRow.AutoFit
PossNewRowHeight = .RowHeight
.Cells(1).ColumnWidth = ActiveCellWidth
.MergeCells = True
.RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
CurrentRowHeight, PossNewRowHeight)
End If
End With
End If
End Sub

Sub EjecutarEnHojasSeleccionadas()
Dim ws As Worksheet
For Each ws In ActiveWindow.SelectedSheets
AutoFitMergedCellRowHeight ws.Range(ActiveCell.Address)
Next ws
End Sub





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