Como automatizar la función Goal Seek en Excel

Tengo una hoja de cálculo "Calculación" en que cada vez que hago un cambio tengo que ajustar un valor en otra hoja "Factor" utilizando la función "Goal Seek".

O que hice fue crear un botón en la hoja "Factor" asignándole una macro que me ajuste el valor que necesito.

Funciona bien, pero para cada cambio en la hoja "Calculación" tengo que volver a la hoja "Factor" y ejecutar la macro con el botón

La idea es que ante cualquier cambio en la hoja "Calculación" la macro se ejecute automáticamente en la hoja "Factor" sin que sea necesario usar el botón.

La macro que estoy ocupando es la siguiente:

Sub FCTR_GARANTIA()
ActiveSheet.Unprotect "xxxxx"
Range("k25").GoalSeek Goal:=Range("I25").Value, ChangingCell:=Range("G26")
ActiveSheet.Protect "xxxxx"
End Sub
'I25 es la celda con el valor que necesito 
'K25 es la celda a la que aplico "Goal Seek"
'G26 es la celda que tiene el factor para que la celda K25 sea igual la I25

Traté de incluir la misma macro en el código de la hoja "Calculación" con la opción "Change" pero me dio un error 1005...

Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Factor").Select
ActiveSheet.Unprotect "xxxxx"
Range("k25").GoalSeek Goal:=Range("I25").Value, ChangingCell:=Range("G26")
ActiveSheet.Protect "xxxxx"
Sheets("Calculación").Select
End Sub
Respuesta
1

Prueba así:

Sub FCTR_GARANTIA()
With Sheets("Factor")
    .Unprotect "xxxxx"
    .Range("k25").GoalSeek Goal:=.Range("I25").Value, ChangingCell:=.Range("G26")
    .Protect "xxxxx"
End With
End Sub

Y en la hoja "Calculación" esto:

Private Sub Worksheet_Change(ByVal Target As Range)
Call FCTR_GARANTIA
End Sub

Comentas

Abraham Valencia

PD: No tengo tu archivo para hacer pruebas pero en base a esa idea intenta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas