首页 > 解决方案 > 在另一个 UDF 中调用 UDF

问题描述

我需要从另一个模块(在同一个工作簿中)调用以前制作的 UDF 来构建另一个 UDF。如何调用第一个函数?

这适用于 Excel VBA。我已经构建了我的第一个函数,它计算产品在特定时间的账面价值。它位于一个名为“BookValue”的模块中,该函数名为“BookVal”。我尝试在下一个函数中调用它作为使用 Application.BookVal(args) 的应用程序,作为使用 UDF() 的 UDF,最近通过键入 NewFunction = BookValue(BookVal) 然后接下来的步骤......没有任何效果。全部返回#VALUE。

这是我的代码:

Option Explicit

Function BookVal(UseLife As Single, ResaleAge As Single, PurchPrice As Double, SalVal As Double) As Double


BookVal = PurchPrice - ((PurchPrice - SalVal) / UseLife) * ResaleAge


End Function

Function PostTaxSale(UseLife As Double, ResaleAge As Double, TaxRate As Double, ResaleVal As Double, PurchPrice As Double, SalVal As Double, BookVal As Double) As Double


PostTaxSale = BookVal(UseLife, ResaleAge, PurchPrice, SalVal)
PostTaxSale = ResaleVal - PostTaxSale
PostTaxSale = Tax * PostTaxSale
PostTaxSale = ResaleVal - PostTaxSale

End Function

这导致#VALUE

但我希望代码从选定的单元格中提取作为参数并返回等式的结果:税后转售价值 = 转售价值 - 税 *(转售价值 - 账面价值)。

标签: excelvba

解决方案


您必须提供所有被询问的标准:

 Function BookVal(UseLife As Double, ResaleAge As Double, PurchPrice As Double, SalVal As Double) As Double 
     BookVal = PurchPrice - ((PurchPrice - SalVal) / UseLife) * ResaleAge
 End Function

 Function PostTaxSale(UseLife As Double, ResaleAge As Double, TaxRate As Double, ResaleVal As Double, PurchPrice As Double, SalVal As Double) As Double
    PostTaxSale = BookVal(UseLife, ResaleAge, PurchPrice, SalVal)
    PostTaxSale = ResaleVal - PostTaxSale
    PostTaxSale = TaxRate * PostTaxSale
    PostTaxSale = ResaleVal - PostTaxSale    
 End Function

推荐阅读