我对此错误的所有搜索都没有帮助。这应该很简单......我的琐碎模块[名为FTA]包含以下代码:
Public Type AddMult
Added As Double
Multiplied As Double
End Type
Function test(A As Double, B As Double) As AddMult
test.Added = A + B
test.Multiplied = A * B
End Function
模块干净利落地编译。然后,尝试将工作表单元格值设置为函数返回的类型成员之一,我使用下面的语法。
=test.added(1,2)
导致"用户定义的类型未定义"弹出错误,单元格显示#NAME?。 我怎样才能显示正确的值3? 您可以想象这不是关于简单的数学,而是关于调用返回Type的函数的能力,然后在工作表中使用该Type的一个成员。我的Excel是Office Professional Plus 2010的一部分。
答案 0 :(得分:1)
您可以创建两个可用作UDF的函数,然后让每个函数调用您现有的函数,例如:
Public Type AddMult
Added As Double
Multiplied As Double
End Type
Function test(A As Double, B As Double) As AddMult
test.Added = A + B
test.Multiplied = A * B
End Function
Function test_added(A As Double, B As Double) As Double
test_added = test(A, B).Added
End Function
Function test_multiplied(A As Double, B As Double) As Double
test_multiplied = test(A, B).Multiplied
End Function
然后,您可以在Excel单元格中使用=test_added(1,2)
。
答案 1 :(得分:0)
这是YowE3K的补充,尽管他们的例子确实是最好的选择。 这使用可选的布尔值来查看AddMult中要返回的值
Public Type AddMult
Added As Double
Multiplied As Double
End Type
Function test(A As Double, B As Double, Optional returnMulti As Boolean = False) As Double
Dim am As AddMult
am.Added = A + B
am.Multiplied = A * B
If returnMulti = True Then
test = am.Multiplied
Else
test = am.Added
End If
End Function
答案 2 :(得分:-1)
我遇到了这个问题,并且发现一定要确保在模块的开头定义了类型,然后再用潜艇解决问题。