VBA GoalSeek Loop Issue
Я новичок в отношении VBA и в своем первом коде я пытаюсь сделать цикл через 2 столбца (P и J) для функции GoalSeek.
Ячейки набора: P2, затем P3, затем P4 и т. Д. В то время как ячейки изменения - это J2, затем J3 и т. Д.
Я хочу перебрать строку 2 до строки N (число N хранится в ячейке D1)
Вот что я написал:
N = ThisWorkbook.Sheets("Reverse DCF").Range("D1").Value
Dim i As Integer
For i = 2 To N
Range(Cells((i), "P")).GoalSeek Goal:=0, ChangingCell:=Range(Cells((i), "J"))
Next i
Я получаю сообщение об ошибке:
"Method 'Range' of object '_Global' failed.
Извините, но я не вижу проблемы с моим кодом.
1 ответ
Решение
Вы можете использовать ячейки без дальности. Вот рабочий пример. Убедитесь, что клетка N
содержит целое число и Pi до PN содержит формулы.
Sub GoalSeekTest()
Dim N As Integer
Dim i As Integer
N = ThisWorkbook.Sheets("Reverse DCF").Range("D1").Value
For i = 2 To N
If Cells(i, "P").HasFormula Then
'Messagebox for clarification
MsgBox ("Formula cell: " & Cells(i, "P") _
.Address(RowAbsolute:=False, ColumnAbsolute:=False))
Cells((i), "P").GoalSeek Goal:=0, ChangingCell:=Cells((i), "J")
Else
MsgBox "Cell " & Cells(i, 1) _
.Address(RowAbsolute:=False, ColumnAbsolute:=False) _
& " has no formula - skipping this cell!", _
vbCritical, "Formula required!"
End If
Next i
End Sub