Saltar al contenido

mejorar código en evento change de hoja de calculo de excel

publicado

buenas noches, quisiera saber si puedo mejorar mi macros que se encuentra en el evento change de la hoja de calculo de Excel, son códigos de cálculos básicos, además si me pudieran ayudar a reducir el código o darme algún tip para reducirlo yo mismo estaría muy agradecido. 
de ante mano muchas gracias

    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
    Application.EnableEvents = False
    
        If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then
            Sub todo()
    
    Range("E22") = WorksheetFunction.Sum(Range("E4:E21"))
    Range("E23") = WorksheetFunction.Sum(Range("E4:E19"))
    Range("E24") = WorksheetFunction.Sum(Range("E23") - WorksheetFunction.Sum(Range("I4:I7")))
    Range("i22") = WorksheetFunction.Sum(Range("I4:I21"))
    Range("I4") = Range("E23") * 0.1
    Range("I6") = Range("E23") * 0.0127
    Range("I5") = Range("EN10") * Range("EN11")
    Range("I7") = Range("E23") * 0.006
    Range("I25") = Range("E22") - Range("I22")
    Range("I12") = Range("E24") * 0.03
    Range("C7") = WorksheetFunction.Sum(Range("EQ8") - (Range("EQ9"))) + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16")
    'Range("E7") = WorksheetFunction.Sum(Range("C7") * ((Range("E4") * 0.0077777)))
    Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19")
    'Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 1.3) * 1.5) * Range("C9")
    'Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 0.3)) * (Range("C8"))
    Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 1.3) * 1.5) * Range("C9")
    Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 0.3)) * (Range("C8"))
    Range("E7") = WorksheetFunction.Sum((((Range("E4") / Range("C4")) * 7) / 44) * 1.5) * Range("C7")
    
    End Sub
    
        End If
        
        Application.Calculation = xlAutomatic
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    End Sub

Featured Replies

publicado

Si  no me he liado con los paréntesis:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.Calculation = xlManual
Application.EnableEvents = False

If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then
   Range("E22") = WorksheetFunction.Sum(Range("E4:E21"))
   Range("E23") = WorksheetFunction.Sum(Range("E4:E19"))
   Range("E24") = Range("E23") - WorksheetFunction.Sum(Range("I4:I7"))
   Range("I22") = WorksheetFunction.Sum(Range("I4:I21"))
   Range("I4") = Range("E23") * 0.1
   Range("I5") = Range("EN10") * Range("EN11")
   Range("I6") = Range("E23") * 0.0127
   Range("I7") = Range("E23") * 0.006
   Range("I25") = Range("E22") - Range("I22")
   Range("I12") = Range("E24") * 0.03
   Range("C7") = Range("EQ8") - Range("EQ9") + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16")
   Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19")
   Range("E7") = Range("E4") / Range("C4") * 7 / 44 * 1.5 * Range("C7")
   Range("E8") = Range("E4") / Range("C4") * 7 / 44 * 0.3 * Range("C8")
   Range("E9") = Range("E4") / Range("C4") * 7 / 44 * 1.3 * 1.5 * Range("C9")
End If

Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.