我正在尝试在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
答案 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)