在另一个 UDF 中调用 UDF
Posted
技术标签:
【中文标题】在另一个 UDF 中调用 UDF【英文标题】:Calling a UDF within another UDF 【发布时间】:2019-01-18 22:22:13 【问题描述】:我需要从另一个模块(在同一个工作簿中)调用以前制作的 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
但我希望代码从选定的单元格中提取为参数并返回等式的结果: 税后转售价值 = 转售价值 - 税收 *(转售价值 - 账面价值)。
【问题讨论】:
你能发布另一个 udf 吗? 还将包括货币在内的所有内容都更改为双倍。 我发布了两个 UDF。我只创建了一个,BookVal。你的意思是我应该将两个 UDF 中的所有内容都更改为 double 吗? 我没有看到 BookValue。我看到两个相同的 PostTaxSale。 是的,包括函数,以便它返回双精度:Function BookValue(...) As Double
【参考方案1】:
您必须提供所要求的所有标准:
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
【讨论】:
以上是关于在另一个 UDF 中调用 UDF的主要内容,如果未能解决你的问题,请参考以下文章
UDF's in redshift : 可以在另一个中引用一个 udf
如何在另一个数据库中创建引用调用者中正确 sys.objects 表的 UDF 或视图?