Son muchas las situaciones que encontraremos al trabajar con celdas combinadas. Una de ellas es la de ajustar el alto de filas.
En entrada de Febrero 2018 ya se publicaron varias macros resolviendo situaciones de esta índole, explicadas en videos 1 y 3 de mi canal.
NOTA: al continuación del siguiente ejemplo agrego otro caso: combinar cualquier rango de columnas seleccionando la celda del título.
Aquí vamos a ver otro modo de resolverlo que utilizaremos en el modelo desarrollado desde el evento WorkSheets_Change.
Cuando se trata de tablas de mucho contenido sería conveniente rellenarla primero y así tenemos más visibles todos los datos y luego ejecutar el evento Before_Doble_Click.
La macro se ejecutará al doble clic de cualquier celda dentro de la tabla.
Private
Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row < 4
Then Exit Sub
x = Range("A1").CurrentRegion.Rows.Count
'alto normal de la
fila
alto = 15
'se recorre la tabla de datos
For i = 4 To x
resulta
= 0
'se
evalúa cuántos saltos de renglón existen en texto
Set D = Cells(i, 4): Set E = Cells(i, 5)
'ancho
de cada col
anchotexto = Len(D)
anchocol = D.ColumnWidth + E.ColumnWidth
If anchotexto > anchocol Then
'calculo
dif = (anchotexto - anchocol) / anchocol
If dif <= 1 Then
resulta = 2
Else
resulta = dif + 2
End If
'se asigna el alto obtenido
If resulta > 0 Then Range("A" & i).RowHeight = (alto *
resulta)
End If
Next i
[D3].Select
End Sub
NUEVO EJEMPLO: Al seleccionar con doble clic una celda combinada, la macro ajustará las columnas ocupadas, en todas las filas. NO se necesita indicar en la macro de cuáles columnas se trata. Para un ejemplo como el de la siguiente imagen, se puede ejecutar tanto para el rango D:E o también J:L.
'si la celda seleccionada no está combinada se cancelaIf Target.MergeCells = False Then Exit Sub'cant de col del rango seleccionadocanti = Target.Count'primera col del targetcolx = Target.Column
'obtener el ancho total de las col combinadas, por ej: J:LFor a = colx To colx + canti - 1anchocol = anchocol + Cells(1, a).ColumnWidthNext a'total de filas de la tablax = Range("A1").CurrentRegion.Rows.Count'alto normal de la filaalto = 15'se recorren todas las filas ocupadas a partir de la fila 4....AJUSTARFor i = 4 To xresulta = 0'se evalúa cuántos saltos de renglón existen en textoSet D = Cells(i, colx)'ancho de cada colanchotexto = Len(D)If anchotexto > anchocol Then'calculodif = (anchotexto - anchocol) / anchocolIf dif <= 1.5 Then 'si son muchas col probar con <= 1If dif <= 0.4 Then 'ajustar según el tamaño de la fuenteresulta = 1Elseresulta = 2End IfElseresulta = dif + 2End If'se asigna el alto obtenidoIf resulta > 0 ThenRange("A" & i).RowHeight = (alto * resulta)'si las celdas aún no tienen ajuste de texto, se agrega ahoraWith Cells(i, colx).HorizontalAlignment = xlLeft.VerticalAlignment = xlCenter.WrapText = TrueEnd WithEnd IfEnd IfNext i[A4].Select 'AJUSTAREnd Sub
El libro con el primer ejemplo puede descargarse desde aquí