这适用于 Excel 和 VBA。假设 BondClass 已在类模块中正确定义。我得到一个#VALUE!当我在 Excel 单元格中键入“=GetBondPrincipal()”时。我是否在语法上做错了什么,或者这在 Excel/VBA 中是不可能的?我问是因为我真正想做的是: Return a User Defined Data Type in an Excel Cell
但我无法找到解决方案。所以至少,我想知道我想在下面做的事情是否可行。
Option Explicit
Function InitializeBond(ir As Double, p As Double) As BondClass
Dim mybond As BondClass
Set mybond = New BondClass
Call mybond.Initialize(ir, p)
InitializeBond = mybond
End Function
Function GetBondPrincipal()
Dim b As BondClass
Set b = New BondClass
b = InitializeBond(0.03, 100) //the code quits here,
//it doesn't like the BondClass return type?
GetBondPrincipal = b.GetPrincipal()
End Function
我知道在我提供的示例中,我不必调用 InitializeBond,只需键入“Call b.Initialize(.03,100)”即可。如果我这样做,代码将正常工作。但我似乎无法让 UDF 返回内置类型以外的类型。有什么办法可以做到这一点?我必须为非内置类型定义分配吗?