2016-08-25 5 views
-1

Я пытаюсь использовать Solver в VBA. У меня есть работа; однако я хочу, чтобы последняя ячейка в ByChange: = Range ($ E $$: ****) была последней строкой с числом (которое изменяется). Я думаю, мне нужно включить StLastRow, но я никогда не писал код раньше и был бы очень благодарен за помощь!Excel Solver в VBA

Только для дополнительного фона у меня есть лист, в который я ввожу инвентарь кладовой (в течение нескольких недель есть 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

см ответа ниже –

+0

работает мой код? –

+0

Да! Спасибо! – Tiffany

ответ

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) 
Смежные вопросы