以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  财务函数NPV代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=159576)

--  作者:爱相随
--  发布时间:2020/12/30 23:36:00
--  财务函数NPV代码
老师,我的表包含以下几列:
NPV现值、项目投资期数、资金成本R、折现率、第一年流量、第二年流量。。。。要求:
1、项目投资期数的值从1-6时,Values(0)的列数也分别选择“第一年流量”。。。。“第六年流量”。比如当项目投资期数的值为4时,Values(0)的列数为“第一年流量”至“第四年流量”;
2、当以下数据列“项目投资期数、资金成本R、折现率、第一年流量、第二年流量。。。”任一列的值发生变动时,NPV现值的值也跟着变动。
3、如果拆现率是一个附表B,折现率的值根据项目投资期数和资金成本R的值从表B中取得。
下面的代码是根据帮助例子改造的,只有"资金成本"变动时,NPV现值才会变动,结果与帮助相同。请老师和其他大师指点,最好给出完整代码为谢!!
If e.DataCol.Name = "资金成本" The如
    If e.DataRow.IsNull("资金成本") Then
        e.DataRow("净现值") = Nothing
    Else
        Dim Guess As Double
        Dim RetRate As Double
        Dim NetPVal As Double
        Dim Values(8) As Double
        Guess = e.DataRow("资金成本") 
        RetRate = e.DataRow("贴现率") 
        Values(0) = e.DataRow("第一年流量")
        Values(1) = e.DataRow("第二年流量")
        Values(2) = e.DataRow("第三年流量")
        Values(3) = e.DataRow("第四年流量")
        Values(4) = e.DataRow("第五年流量")
        Values(5) = e.DataRow("第六年流量")
        Values(6) = e.DataRow("第七年流量")
        Values(7) = e.DataRow("第八年流量")
        e.DataRow("净现值") = NPV(e.DataRow("贴现率"), Values)
    End If
End If

--  作者:有点蓝
--  发布时间:2020/12/31 9:33:00
--  
没看懂,现在是什么问题,什么地方不正确?
--  作者:爱相随
--  发布时间:2020/12/31 22:17:00
--  

现在的问题是,只有“资金成本”变动时,NPV现值才会变动,怎样改变代码,才能使任何一项值变动都能使NPV现值发生变动,并且实现以下功能:

1、项目投资期数的值从1-6时,Values(0)的列数也分别选择“第一年流量”。。。。“第六年流量”。比如当项目投资期数的值为4时,Values(0)的列数为“第一年流量”至“第四年流量”;
2、当以下数据列“项目投资期数、资金成本R、折现率、第一年流量、第二年流量。。。”任一列的值发生变动时,NPV现值的值也跟着变动。
3、如果拆现率是一个附表B,折现率的值根据项目投资期数和资金成本R的值自动从表B中取数。

--  作者:有点蓝
--  发布时间:2020/12/31 22:50:00
--  
http://www.foxtable.com/webhelp/topics/2242.htm

Select Case e.DataCol.Name
    Case 
"资金成本","第一年流量","第二年流量",......