Excel VBA中的循环--如何在范围内迭代函数?

Excel VBA中的循环--如何在范围内迭代函数?,excel,vba,macos,Excel,Vba,Macos,所以我知道Excel有一个NPV函数,但我试着做我自己的,因为我试着自学VBA。我在一个表中列出了数据,然后我想遍历一个水平范围的单元格(G5到I5)。我试图构建循环的方式是,提示输入现金流的数量,并将该数字设置为结束日期。这样,宏可以用于不同持续时间的问题 我的代码不起作用,我不知道为什么。有人能帮我看看吗?请使用外行术语,因为我昨天刚开始使用VBA Sub NPV() Dim y As Integer, inv As Double, tax As Double, sal As Double,

所以我知道Excel有一个NPV函数,但我试着做我自己的,因为我试着自学VBA。我在一个表中列出了数据,然后我想遍历一个水平范围的单元格(G5到I5)。我试图构建循环的方式是,提示输入现金流的数量,并将该数字设置为结束日期。这样,宏可以用于不同持续时间的问题

我的代码不起作用,我不知道为什么。有人能帮我看看吗?请使用外行术语,因为我昨天刚开始使用VBA

Sub NPV()
Dim y As Integer, inv As Double, tax As Double, sal As Double, wc As Double, dr As Double, i As Integer, v As Double
y = Range("C4")
inv = Range("C5")
tax = Range("C6")
sal = Range("E4")
wc = Range("E5")
dr = Range("E6")

Dim total As Double
total = 0
For i = 1 To y
    v = Range("5, 5 + i")
    v = v / (1 + dr) ^ i
    total = total + v
    Next i

total = total + ((1 - tax) * sal) + wc
Range("F5").Value = total
End Sub
考虑更换:

v = Range("5, 5 + i")
与:


1) 它到底是如何不起作用的,2)您在这里期望得到什么结果:
v=Range(“5,5+i”)
?它只是打开一个窗口,其中代码子NPV突出显示。结果应该是8443。我认为问题在于代码的那一部分。
v = Cells(5, 5 + i)