Macros me tira un error de compilación

Al ejecutar mi macros, me tira un error que dice que el procedimiento es demasiado largo, pero no puedo acortarlo y aún me quedan códigos que ingresar, ¿qué puedo hacer?

1 Respuesta

Respuesta
1

Puedes pasar código a otro módulo, en el código 1 puedes poner una llamada al código 2, por ejemplo, si tienes esto:

Sub marco1()
    Range("C11").Select
    Selection.Copy
    Range("E11").Select
    ActiveSheet.Paste
    Range("C13").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E13").Select
    ActiveSheet.Paste
    Range("C15").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E15").Select
    ActiveSheet.Paste
End Sub

Puedes dejar en  el módulo1, macro1 lo siguiente:

Sub marco1()
    Range("C11").Select
    Selection.Copy
    Range("E11").Select
    ActiveSheet.Paste
    Range("C13").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E13").Select
    ActiveSheet.Paste
    '
    Call Macro2
End Sub

En el módulo2, creas una macro llamada "macro2" con lo siguiente:

Sub Macro2()
    Range("C15").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E15").Select
    ActiveSheet.Paste
End Sub

Es una forma, pero honestamente, prefiero revisar tu código y tratar de optimizarlo.

Si te funciona la propuesta, recuerda valorar la respuesta.

Si quieres que optimice tu código, envíame tu archivo con tu macro y me explicas qué es lo que quieres hacer.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Jennifer Arce Trigo” y el título de esta pregunta.

Hola, te acabo de mandar un corre, muchas gracias !

H   o l a:

El código optimizado queda así:

Private Sub CommandButton1_Click()
'Por Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Cargos")
    '
    If TextBox1 = "" Then
        MsgBox "Captura un "
        TextBox1.SetFocus
        Exit Sub
    End If
    Set b = h1.Columns("A").Find(TextBox1, lookat:=xlWhole)
    If b Is Nothing Then
        MsgBox "El Rut no existe"
        TextBox1.SetFocus
        Exit Sub
    End If
    '
    fila = b.Row
    cargo = h1.Cells(fila, "C")
    Set b = h2.Columns("A").Find(cargo, lookat:=xlWhole)
    If Not b Is Nothing Then
        META_OP = h2.Cells(b.Row, "B")
        AG_OP = h2.Cells(b.Row, "C")
        FALLA_OP = h2.Cells(b.Row, "D")
        META = h2.Cells(b.Row, "E")
        AG = h2.Cells(b.Row, "F")
    Else
        MsgBox "El cargo no existe "
        Exit Sub
    End If
    '
    For i = 1 To 23
        dato = Controls("TextBox" & i).Value
        If IsNumeric(dato) Then dato = Val(dato)
        h1.Cells(fila, i) = dato
    Next
    '
    wSum = (Val(TextBox6) * (50 / (3 * 100)) + Val(TextBox7) * (50 / (3 * 100)) + Val(TextBox8) * (50 / (3 * 100)) + _
            Val(TextBox9) * 0 + Val(TextBox10) * 0.3 + Val(TextBox11) * 0.2 + _
            Val(TextBox12) * 0) * META + (Val(TextBox13) * 0.2 + Val(TextBox14) * 0.2 + _
            Val(TextBox15) * 0.2 + Val(TextBox16) * 0.2 + Val(TextBox17) * 0.2) * AG + _
            (Val(TextBox18) * 0.1 + Val(TextBox19) * 0.1) * FALLA
    h1.Cells(fila, "X") = Format(wSum, "##0.00")
    '
    Call Limpiar
    MsgBox "Datos actualizados"
End Sub

Por cierto, revisa tu fórmula, porque hay valores que se multiplican por cero.

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas