Automation Excel解算器函数在包含输入变量的列中运行

Automation Excel解算器函数在包含输入变量的列中运行,automation,solver,Automation,Solver,该程序的目的是输入不同的目标集,在多个列中更改变量 请检查我的密码。不断产生错误。相同的程序将用于多个列 基于,我将使用以下sub(我对它进行了测试,是的,它即使没有应用程序也能工作。运行行) 注意事项:它不使用SolverReset。用于SetCell、ByChange和CellRef的字符串包含工作表引用(严格来说不是必需的,但有助于避免麻烦)。ValueOf和FormulaText不是文本,而是数字。我相信问题在于Solver.xlam!自动打开。如果要确保已启用解算器加载项并可从VBA访

该程序的目的是输入不同的目标集,在多个列中更改变量

请检查我的密码。不断产生错误。相同的程序将用于多个列

基于,我将使用以下sub(我对它进行了测试,是的,它即使没有应用程序也能工作。运行行)


注意事项:它不使用SolverReset。用于SetCell、ByChange和CellRef的字符串包含工作表引用(严格来说不是必需的,但有助于避免麻烦)。ValueOf和FormulaText不是文本,而是数字。

我相信问题在于
Solver.xlam!自动打开
。如果要确保已启用解算器加载项并可从VBA访问,请使用以下代码:。他尝试了你的建议,但没有成功。有什么选择吗?它在哪里坏了?试着注释掉这一行,看看会发生什么。当我们直接使用地址“H17”表示setcell,“H12”表示BChange时,程序运行不会有问题。但如果我们通过函数调用获取输入,就会产生错误。“解算器:发生意外的内部错误,或可用内存已耗尽”Excel不允许用户定义的函数更改单元格、工作表或工作簿属性。您将需要使用Sub或可能的更改事件来执行此操作。
Function Obj_Fnc_Colmn(IN1 As Range, OP1 As Range)
Application.Run "Solver.xlam!Auto_Open"
SolverReset
X_var = IN1.Address
Y_var = OP1.Address
MsgBox X_var
SolverOK SetCell:=Y_var, MaxMinVal:=3, ValueOf:="0", ByChange:=X_var
SolverAdd CellRef:=X_var, Relation:=3, FormulaText:="0"

SolverSolve UserFinish:=False
End Function
Option Explicit
Sub Obj_Fnc_Colmn()
Dim IN1 As Range, OP1 As Range
Dim X_Var As String, Y_Var As String

    Set IN1 = Sheets("Sheet1").Cells(2, 4)
    Set OP1 = Sheets("Sheet1").Cells(2, 5)

    X_Var = Split(IN1.Address(external:=True), "[")(0) & Split(IN1.Address(external:=True), "]")(1)
    Y_Var = Split(OP1.Address(external:=True), "[")(0) & Split(OP1.Address(external:=True), "]")(1)

    SolverOK SetCell:=Y_Var, MaxMinVal:=3, ValueOf:=0, ByChange:=X_Var, Engine:=1
    SolverAdd CellRef:=X_Var, Relation:=3, FormulaText:=0
    SolverSolve UserFinish:=True

End Sub