Error en la ejecución de una macro de combinacion de celdas

2 envíos / 0 nuevos
Último envío
megaman277
Imagen de megaman277
Offline
última acción: Hace 5 años 11 meses
alta: 06/04/2018 - 20:22
Puntos: 25
Error en la ejecución de una macro de combinacion de celdas

Muy buenas tardes, soy nuevo en esto de las macros pero mucho les agradecería si pudieran ayudarme con un error que tengo,

Sucede que al momento de exportar un archivo de OPUS (ingeniería de costos) a excel, lo que hace el programa OPUS es combinar muchas celdas y ajustar los anchos para que la hoja propiamente se vea bien en formato, sin embargo hay que darle un formato definido por el usuario para tener un archivo sin tantas celdas combinadas y por otro lado evitar que se pierda información dentro de alguna celda, 

la sentencia que se genera cuando quiero deshacer una combinacion de 7 celdas (previamente seleccionando el rango de todas las celdas combinadas) es la siguiente:

__________________________________________________________________________

Sub Macro8()
'
' Macro8 Macro
'

'
    ActiveWindow.SmallScroll Down:=-12
    Range("C4:L20").Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    Selection.UnMerge
End Sub

____________________________________________________________________________

 

Se observa que se repite el mismo código entre "withselection" y "End with" (para mí sin razón aparente) , hasta aquí todo bien, el codigo se graba sin problemas, el problema ocurre cuando son muchisimas celdas combinadas y la lista se hace tan larga que la barra de desplazamiento queda muy estrecha, entonces me sale:

error de combinación, procedimiento demasiado largo.

 

La ayuda de Officce solo me dice dividir el procedimiento porque pesa mas de 64 K, he investigado cómo hacer una sentencia que ayude pero no he tenido éxito.

 

Agradecería mucho su valiosa ayuda, Muchas gracias de antemano.

 

 

 

 

AdjuntoTamaño
Image icon macro8.jpg184.28 KB
Image icon macro9.jpg214.96 KB

Etiquetas: 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 20 horas 16 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
No sé cómo será tu

No sé cómo será tu procedimiento de largo, pero seguramente el error estará motivado por otra cosa.

Cuando grabas una macro se graba todo lo que haces, aunque entres en las opciones de formato de la celda y sólo cambies la alineación, se graba todo el formato de la celda, por eso aparece repetido tantas veces lo mismo, eso es en realidad lo que está haciendo Excel cada paso que das.

Ideas:

Simplifica tu código. borra todo lo que has grabado pero que no querías hacer realmente

Si tienes qeu aplicar el mismo cambio de formato con diferentes celdas, por ejemplo primero con Range("C4:L20") y luego con C84:L100) plantéate crear un procedimiento con argumentos, y que ese argumento sea el rango sobre el que quieres realizar la operación

Sub MacroConArgumento(rangoamodificar as range)

   With rangoamodificar

   ...

   end With

End Sub

 

luego simplemente tendrás que llamar a este procedimiento cambiando el rango sobre el que quieres actuar, por ejempo

MacroConArgumento Range("C4:L20")


viendo un poco más despacio el código, podría quedar así:

Sub Macroconargumentos(rangoamodificar As Range)

    With rangoamodificar

        .HorizontalAlignment = xlGeneral

        .VerticalAlignment = xlBottom

        .WrapText = False

        .Orientation = 0

        .AddIndent = False

        .IndentLevel = 0

        .ShrinkToFit = False

        .ReadingOrder = xlContext

        .UnMerge

    End With

 

End Sub

 

------
Ya sé Excel, pero necesito más.