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
Другие вопросы по тегам