我是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.
对不起,我没有看到我的代码有问题。
您可以使用不带范围的单元格。这是一个有效的例子。确保单元格N
con持有一个整数,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