我想编写一个自定义工作表函数,它使用我已定义为参数的类。我试图做以下事情:
我创建了一个名为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链接这些功能,一切都按预期工作
Sub doit()
MsgBox (square(make_wrapper(7)))
End Sub
显示49。
如果我尝试直接从excel调用该函数,则它不起作用。如果我在单元格中键入“= square(make_wrapper(7))”,则显示“#VALUE!”。我究竟做错了什么?这有可能吗?
答案 0 :(得分:0)
似乎没有人给你一个明确的答案。
这有可能吗?
您不能将自定义类型返回给这样的UDF。
请改为尝试:
Function square(iValue) As Integer
Dim w As New wrapper
w.value = iValue
square = w.value * w.value
End Function
虽然我不确定你试图用类模块实现什么。
答案 1 :(得分:-1)
参数名称无效:'Wrapper'已经是类的名称。
试试这个:
Function square(MyWrapper As wrapper) As Integer
square = MyWrapper.value * MyWrapper.value
End Function