在Excel VBA模块中使用GoalSeek功能

在Excel VBA模块中使用GoalSeek功能,vba,excel,Vba,Excel,有人能帮我理解为什么第一个子项有效,而第二个子项给出了无效的引用吗 Sub tester1() Range("Q5").GoalSeek goal:=2000000, changingcell:=Range("P5") End Sub Sub tester3() Dim rngRow As Range For Each rngRow In Range("P5").Rows rngRow.Cells(0, 1).GoalSeek goal:=2000

有人能帮我理解为什么第一个子项有效,而第二个子项给出了无效的引用吗

Sub tester1()

    Range("Q5").GoalSeek goal:=2000000, changingcell:=Range("P5")

End Sub


Sub tester3()
    Dim rngRow As Range
    For Each rngRow In Range("P5").Rows
        rngRow.Cells(0, 1).GoalSeek goal:=2000000, changingcell:=rngRow.Cells(0, 0)
    Next rngRow
End Sub
提前感谢。

单元格(0,1)
单元格(0,0)
无效-行和列应大于0

Range("A1") = Cells(1, 1)    'Cells(row, col)
Range("A2") = Cells(2, 1)
Range("B1") = Cells(1, 2)
Range("B2") = Cells(2, 2)

用这个测试:

Sub tester3()

    Dim cel As Range

    For Each cel In Range("Q5:Q10")

        cel.GoalSeek Goal:=2000000, ChangingCell:=cel.Offset(0, -1)

    Next rngRow

End Sub

偏移量可能会混淆:
范围(“B2”)。偏移量(-1,-1)
范围(“A1”)
谢谢。使用正确的单元格引用仍然返回无效引用:rngRow.Cells(5,17)。GoalSeek目标:=2000000,changingcell:=rngRow.Cells(5,16)。单元格(5,17)是一个公式,单元格(5,16)是一个值。
cel.GoalSeek目标:=2000000,ChangingCell:=cel.Offset(0,1)
-这有效吗?我仍然得到无效的引用。Q5中的公式是UDF。如果我手动更改P5中的值以找到解决方案,但不使用VBA,则效果很好。仅供参考,我正试图让它在一个单元格中工作,这样我就可以将其设置为计算500个单元格。下面的计算设置为手动还是自动?(选项卡公式->计算选项)