2016-04-15 1 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 Solver выполняется в столбце с входными переменными

Просьба ознакомиться с моим кодом. Продолжайте генерировать ошибку. Такая же программа хотела бы использовать для нескольких столбцов.

+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 не являются текстом, а цифрами.

Смежные вопросы