2016-04-15 20 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'だと思います。ソルバーアドインがVBAから有効にされ、到達可能であることを確認したい場合は、[ソルバーの初回使用準備](http://peltiertech.com/Excel/SolverVBA.html#Solver3)のコードをここで使用してください。 HTH – kindoflost

+0

私はあなたが提案したものを試しましたが、うまくいかなかったのです。オプションはありますか? –

+0

どこが壊れていますか?その行をコメントアウトして何が起こるかを見てみてください。 – kindoflost

答えて

0

thisに基づいて、私は次のサブを使用します...注意すべき

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 

物事を(私はそうそれもApplication.Runラインなしで動作し、テストにそれをやりました): SolverResetは使用しません。 SetCell、ByChange、およびCellRefに使用される文字列には、Sheet参照が含まれています(厳密には必要ではありませんが、問題を回避するのに役立ちます)。 ValueOfとFormulaTextはテキストではなく数字です。

関連する問題