2016-01-20 154 views
3

我是VBA的新手,在我的第一个代码中,我尝试通过2列(P和J)来实现GoalSeek函数的循环。VBA GoalSeek Loop问题

该组细胞是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 

我得到一个错误信息:

法 '范围' 对象的

” '_Global' 失败 我很抱歉,但我没有看到我的代码的问题。

提前致谢!

回答

1

您可以使用单元不带范围。这是一个工作示例。确保电池N包含整数并且P i至P N包含公式。

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 
+0

您好, 感谢您的回复, 基本上这行的函数变量求解: 范围(将细胞((i)中, “P”))GoalSeek目标:= 0,ChangingCell: = Range(Cells((i),“J”)) 对于一个简单单元格,它是这样的: 范围(“P2”)GoalSeek目标:= 0,ChangingCell:=范围(“J2”) 代码工作的简单单元格。 我不想将该值设置为1.我想要使用目标搜索函数更改单元格(变量),直到目标单元格(函数)通过​​迭代达到特定值(此处为0)。 –

+0

查看我的更新版本。 –

+0

它的工作!非常感谢 ! –