VBA – 用户定义types未定义

我所有的search这个错误没有帮助。 这应该是简单的…我微不足道的模块[名为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 

模块编译干净。 然后,尝试将工作表单元格值设置为函数返回的types成员之一,我使用下面的语法。

=test.added(1,2)

它导致“用户定义的types未定义”popup错误,单元格显示#NAME ?. 我如何得到它显示正确的值3? 正如你可以想象的那样,这不是微不足道的math,而是关于调用返回Type的函数的能力,然后在工作表中使用该Type的一个成员。 我的Excel是Office Professional Plus 2010的一部分。

您可以创build两个可用作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)

这是YowE3K的补充,虽然他们的例子确实是最好的select。 这使用可选的布尔值来查看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