2016-04-15 16 views
-1
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 

程序的意圖是輸入不同的目標集合,在多列中更改變量。Excel解算器功能運行在具有輸入變量的列中

請通過我的代碼。保持生成錯誤。同一個程序想用於多列。

+0

我相信問題是'Solver.xlam!Auto_Open'。如果您想確保Solver加載項已啓用且可從VBA訪問,請在此處使用代碼:[準備首次使用的求解器](http://peltiertech.com/Excel/SolverVBA.html#Solver3)。 HTH – kindoflost

+0

我嘗試了你的建議,但沒有奏效。有沒有任何選擇。 –

+0

它在哪裏破?嘗試發表評論,看看會發生什麼。 – kindoflost

回答

0

基於this,我會用下面的子(我做了測試,是的,它的工作即使沒有Application.Run線)...

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 

需要注意的事項:它不使用SolverReset。用於SetCell,ByChange和CellRef的字符串包含Sheet引用(不是絕對必要的,但有助於避免麻煩)。 ValueOf和FormulaText不是文字,而是數字。

相關問題