Excel VBA 中的求解器
Excel Solver in VBA
我正在尝试使用 VBA 中的求解器。我有它的工作;但是,我希望 ByChange:=Range($E$$: ****) 中的最后一个单元格成为带有数字(发生变化)的最后一行。我在想我需要合并一个 StLastRow,但我以前从未写过代码,非常感谢您的帮助!
只是为了补充背景信息,我有一个 sheet 用于输入食品储藏室库存(有些星期有 20 种食品,有些星期有 50 种)。我希望代码根据输入的项目数选择 ByChanging Range。如果这是有道理的。
这是我正在使用的代码,但我希望它查找最后一行填充的 $E$9。
Sub Solver()
SolverReset
SolverOK ByChange:=Range("$E:**$E**")
SolverAdd cellRef:="$J", _
relation:=2, FormulaText:="$C"
SolverAdd cellRef:="$M", _
relation:=2, FormulaText:="$C"
SolverAdd cellRef:="$P", _
relation:=2, FormulaText:="$C"
SolverAdd cellRef:="$S", _
relation:=2, FormulaText:="$C"
SolverSolve UserFinish:=False
End Sub
要动态获取 E 列 中的最后一行,请更改您的行:
SolverOK ByChange:=Range("$E:**$E**")
使用这些行:
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:$E$" & LastRow)
我正在尝试使用 VBA 中的求解器。我有它的工作;但是,我希望 ByChange:=Range($E$$: ****) 中的最后一个单元格成为带有数字(发生变化)的最后一行。我在想我需要合并一个 StLastRow,但我以前从未写过代码,非常感谢您的帮助!
只是为了补充背景信息,我有一个 sheet 用于输入食品储藏室库存(有些星期有 20 种食品,有些星期有 50 种)。我希望代码根据输入的项目数选择 ByChanging Range。如果这是有道理的。
这是我正在使用的代码,但我希望它查找最后一行填充的 $E$9。
Sub Solver()
SolverReset
SolverOK ByChange:=Range("$E:**$E**")
SolverAdd cellRef:="$J", _
relation:=2, FormulaText:="$C"
SolverAdd cellRef:="$M", _
relation:=2, FormulaText:="$C"
SolverAdd cellRef:="$P", _
relation:=2, FormulaText:="$C"
SolverAdd cellRef:="$S", _
relation:=2, FormulaText:="$C"
SolverSolve UserFinish:=False
End Sub
要动态获取 E 列 中的最后一行,请更改您的行:
SolverOK ByChange:=Range("$E:**$E**")
使用这些行:
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:$E$" & LastRow)