VBA目标寻求循环问题

问题描述 投票:3回答:1

我是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.

对不起,我没有看到我的代码有问题。

excel vba excel-vba loops
1个回答
1
投票

您可以使用不带范围的单元格。这是一个有效的例子。确保单元格Ncon持有一个整数,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
© www.soinside.com 2019 - 2024. All rights reserved.