Como corrijo errores de programación para celdas combinadas en excel

Para Dante Amor

Buenas tardes el Sr. Amor me apoyo en generar una macro que autoajusta la altura de las celdas combinadas, sin embargo al pasar el codigo a mi plantilla de trabajo me genera ciertos errores que impide la terminación de la macro al igual que al colocarle una contraseña al documento. Espero me puedan ayudar se los agradecería mucho.

Los codigos que genera la rutina son los siguientes: "Run-time error 13 Type mismatch" y le doy al botón debug y me deja sombreado con amarillo la fila con la rutina "If Range(celda1(j) & i) <> "" Then", como le comente con todo y eso la macro si ajusta.

También a la hora de guardar la plantilla con contraseña y ejecutar la macro, en este caso no corre y de igual forma manda un cuadro de texto con la siguiente leyenda "Run-time error 1004 Application-defined or object-defined error" y de igual forma le aprieto al botón debug para ver donde esta el error y me deja sombreado con amarillo la fila con la rutina ".Merge".

1 Respuesta

Respuesta
1

Envíame el archivo que te causa problemas con todo y la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Jair Abelardo Bustamante Moreno” y el título de esta pregunta.

Te anexo la macro actualizada para errores en las celdas y para la hoja protegida.

Cambia en la macro "abc" por el password que desees para proteger la hoja.

Dim wmax
'
Sub centrar()
'Por.Dante Amor
    clave = "abc"
    '
    Application.ScreenUpdating = False
    ActiveSheet.Unprotect clave
    '
    celda1 = Array("P", "U", "Z", "AJ")
    celda2 = Array("T", "Y", "AD", "AN")
    For i = 10 To 34 'Range("B" & Rows.Count).End(xlUp).Row
        wmax = 0
        For j = LBound(celda1) To UBound(celda1)
            If Not IsError(Range(celda1(j) & i)) Then
                If Range(celda1(j) & i) <> "" Then
                    ajustarfila Range(celda1(j) & i & ":" & celda2(j) & i)
                End If
            End If
        Next
    Next
    Application.ScreenUpdating = True
    ActiveSheet.Protect clave, DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
        AllowUsingPivotTables:=True
    MsgBox "Filas ajustadas"
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
    If sngAlto > wmax Then wmax = sngAlto + 15
    If wmax > 409 Then wmax = 409
    With rngRango
        .Merge
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlTop
        .Columns(1).EntireColumn.ColumnWidth = sngAnchoCelda
        .Columns(1).RowHeight = wmax
    End With
End Sub

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas