Macro para ajustar altura en celdas combinadas

Para Dante Amor

Gracias a tu ayuda en una pregunta anterior, tengo el siguiente código VisualBasic para ajustar en Excel la altura de celdas combinadas en las columnas B:I desde la fila 2 hasta la fila 200. ¿Sería abusar de tu ayuda pedirme que me dijeras cómo se aplicaría sólo a unas filas determinadas? Por ejemplo, la 5, 10 y 15.

Disculpa lo básico de la pregunta, estoy intentando aprender! Muchas gracias.

Sub centrar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    For i = 2 To 200
        ajustarfila Range("B" & i & ":I" & i)
    Next
    Application.ScreenUpdating = True
End Sub
'
Sub ajustarfila(rngRango As Range)
'Por.Dante Amor
    For n = 1 To rngRango.Columns.Count
        sngAnchoTotal = sngAnchoTotal + rngRango.Cells(1, n).ColumnWidth
    Next n
    With rngRango.Cells(1, 1)
        sngAnchoCelda = .ColumnWidth
        .MergeCells = False
        .ColumnWidth = sngAnchoTotal
        rngRango.Parent.Rows(rngRango.Row).AutoFit
        sngAlto = .RowHeight
    End With
    With rngRango
        .Merge
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlTop
        .Columns(1).EntireColumn.ColumnWidth = sngAnchoCelda
        .Columns(1).RowHeight = sngAlto
    End With
End Sub

1 respuesta

Respuesta
1

Esta podría ser una forma para las filas 5,10,15

Sub centrar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    filas = Array(5, 10, 15)
    For i = LBound(filas) To UBound(filas)
        ajustarfila Range("B" & filas(i) & ":I" & filas(i))
    Next
    Application.ScreenUpdating = True
End Sub
'
Sub ajustarfila(rngRango As Range)
'Por.Dante Amor
    For n = 1 To rngRango.Columns.Count
        sngAnchoTotal = sngAnchoTotal + rngRango.Cells(1, n).ColumnWidth
    Next n
    With rngRango.Cells(1, 1)
        sngAnchoCelda = .ColumnWidth
        .MergeCells = False
        .ColumnWidth = sngAnchoTotal
        rngRango.Parent.Rows(rngRango.Row).AutoFit
        sngAlto = .RowHeight
    End With
    With rngRango
        .Merge
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlTop
        .Columns(1).EntireColumn.ColumnWidth = sngAnchoCelda
        .Columns(1).RowHeight = sngAlto
    End With
End Sub

Pero si quieres que sea cada 5 filas empezando en la fila 5, puede ser así:

Sub centrar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    For i = 5 To 200 Step 5
        ajustarfila Range("B" & i & ":I" & i)
    Next
    Application.ScreenUpdating = True
End Sub
'
Sub ajustarfila(rngRango As Range)
'Por.Dante Amor
    For n = 1 To rngRango.Columns.Count
        sngAnchoTotal = sngAnchoTotal + rngRango.Cells(1, n).ColumnWidth
    Next n
    With rngRango.Cells(1, 1)
        sngAnchoCelda = .ColumnWidth
        .MergeCells = False
        .ColumnWidth = sngAnchoTotal
        rngRango.Parent.Rows(rngRango.Row).AutoFit
        sngAlto = .RowHeight
    End With
    With rngRango
        .Merge
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlTop
        .Columns(1).EntireColumn.ColumnWidth = sngAnchoCelda
        .Columns(1).RowHeight = sngAlto
    End With
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Soy nuevo en este foro y estoy alucinando con tu amabilidad. Funciona estupendamente y me lo has puesto muy, muy fácil. Muchísimas gracias, saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas