这适用于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返回除内置类型之外的类型。有什么方法可以做到这一点吗?我是否必须为非内置类型定义分配?
答案 0 :(得分:1)
提示:使用“SET”。
(VB程序员在VB6和VBA中最常见的错误)。
答案 1 :(得分:0)
无论如何,我觉得这不是很优雅 我宁愿写:
Function GetBondPrincipal() Dim b As BondClass Set b = New BondClass with b .param1 = 0.03 .param2 = 100 .InitializeBond GetBondPrincipal = .GetPrincipal() end with End Function