使用类作为自定义工作表函数的参数

我想写一个自定义的工作表函数,使用我已经定义为参数的类。 我试图做到以下几点:

我创build了一个名为Wrapper的类:

Private m_value As Integer Public Property Get value() As Integer value = m_value End Property Public Property Let value(value As Integer) m_value = value End Property 

然后我写了两个函数:

 Function make_wrapper(value As Integer) As wrapper Set make_wrapper = New wrapper make_wrapper.value = value End Function Function square(wrapper As wrapper) As Integer square = wrapper.value * wrapper.value End Function 

如果我直接从VBA链接这些function,一切正常,如我所料

 Sub doit() MsgBox (square(make_wrapper(7))) End Sub 

显示49。

如果我试图直接从Excel中调用该函数,它不起作用。 如果在单元格中input“= square(make_wrapper(7))”,则显示“#VALUE!”。 我究竟做错了什么? 这可能吗?

似乎没有人给你一个明确的答案。

这可能吗?

你不能像这样将自定义types返回给UDF。

试试这个:

 Function square(iValue) As Integer Dim w As New wrapper w.value = iValue square = w.value * w.value End Function 

虽然我不确定你想用class模块实现什么。

参数名称无效:“包装器”已经是类的名称。

尝试这个:

 Function square(MyWrapper As wrapper) As Integer square = MyWrapper.value * MyWrapper.value End Function