Я пишу код VBA, который использует решатель в Excel, чтобы минимизировать ошибку между эталонными значениями и значениями, предсказанными моим уравнением.Но я хотел бы сохранить уравнения в коде VBA, а не добавлять их в виде столбцов в Excel.Это для защиты моих уравнений с помощью макроса, защищенного паролем.Коды выглядят следующим образом:
Ячейки B2 и C2 - это переменные, которые будут меняться решателем до минимума.Ячейки F9 и G9 являются эталонными значениями.
Range("B2").Select
ActiveCell.FormulaR1C1 = "1"
Range("C2").Select
ActiveCell.FormulaR1C1 = "1"
SolverReset
SolverAdd CellRef:="$B$2", Relation:=3, FormulaText:="0.3"
SolverAdd CellRef:="$B$2", Relation:=1, FormulaText:="1.7"
SolverAdd CellRef:="$C$2", Relation:=3, FormulaText:="1"
SolverAdd CellRef:="$C$2", Relation:=1, FormulaText:="20"
value1 = 28.563041 - 0.6895786 * Range("B2").Value - 0.1685979 *
Range("C2").Value
value2 = 31.161328 - 0.1194945 * Range("B2").Value - 0.1156287 *
Range("C2").Value
error1 = (Range("$F$9").Value - value1 ) ^ 2
error2 = (Range("$G$9").Value - value2) ^ 2
error = error1 + error2
Range("J11").Value = error
SolverOk SetCell:="$J$11", MaxMinVal:=2, ValueOf:=0, ByChange:="$B$2:$C$2", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
Проблема: переменные B2 и C2 инициализируются со значением 1, но не изменяются во время оптимизации решателем.Я хотел бы знать, как получить переменные в цикле решателя.