2016-01-20 153 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

它的工作!非常感謝 ! –