VBA中的Excel解算器

时间:2016-08-25 01:23:34

标签: excel vba excel-vba add-in solver

我正在尝试在VBA中使用Solver。我有它的工作;但是,我希望ByChange:= Range($ E $$:****)中的最后一个单元格是带有数字的最后一行(更改)。我想我需要合并一个StLastRow,但我之前从未编写代码,非常感谢你的帮助!

只是为了获得额外的背景,我有一张表格,我输入了一个食品库存(有些星期有20种食品,有些星期有50种)。我希望代码根据输入的项目数选择ByChanging Range。如果这是有道理的。

这是我工作的代码,但是我想要它以$ E $ 9来查找填写的最后一行。

Sub Solver()

SolverReset
SolverOK ByChange:=Range("$E$4:**$E$9**")
SolverAdd cellRef:="$J$3", _
 relation:=2, FormulaText:="$C$5"
SolverAdd cellRef:="$M$3", _
 relation:=2, FormulaText:="$C$6"
SolverAdd cellRef:="$P$3", _
 relation:=2, FormulaText:="$C$7"
SolverAdd cellRef:="$S$3", _
 relation:=2, FormulaText:="$C$8"

SolverSolve UserFinish:=False

End Sub

1 个答案:

答案 0 :(得分:1)

要动态获取 E列中的最后一行,请更改以下行:

SolverOK ByChange:=Range("$E$4:**$E$9**")

这些行:

Dim LastRow As Long
Dim sht As Worksheet

' change "Sheet1" to your sheet name
Set sht = ThisWorkbook.Sheets("Sheet1")

' find last row in Column E
LastRow = sht.Cells(sht.Rows.Count, "E").End(xlUp).Row

SolverReset
SolverOK ByChange:=Range("$E$4:$E$" & LastRow)