【问题标题】:VBA GoalSeek Loop IssueVBA GoalSeek 循环问题
【发布时间】:2016-01-20 10:49:09
【问题描述】:

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

很抱歉,我的代码没有发现问题。

【问题讨论】:

    标签: vba excel loops


    【解决方案1】:

    您可以使用 Cells 而不使用 Range。这是一个工作示例。确保单元格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
    

    【讨论】:

    • 您好,谢谢您的回复,基本上这一行是函数Goal Seek: Range(Cells((i), "P")).GoalSeek Goal:=0, ChangingCell:=Range(Cells ((i), "J")) 对于一个简单的单元格,它是这样的: Range("P2").GoalSeek Goal:=0, ChangingCell:=Range("J2") 对于一个简单的单元格,代码可以工作。我不想将值设置为 1。我想使用 Goal Seek 函数来更改单元格(变量),直到目标单元格(函数)通过​​迭代达到某个值(此处为 0)。
    猜你喜欢
    • 2017-09-25
    • 2015-01-02
    • 1970-01-01
    • 2011-10-29
    • 2014-08-15
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    相关资源
    最近更新 更多