我正在检查是否有任何方法可以在UDF中传递结果数组。
如果我传递一个范围,我的函数正在按预期工作,例如 - $A$2:$A$5
,但是如果我在传递范围之前进行数组计算则没有,例如 - IF($A$2:$A$5 < 3, $A$2:$A$5 ,"")
带控制+ shift +输入
这是我正在使用的代码 -
Public Function ReverseTextToColumns(Rg As Range, Optional D As String = " ") As String
Dim xArr
xArr = Application.WorksheetFunction.Transpose((Rg.Value))
ReverseTextToColumns = Join(xArr, D)
End Function
我不想创建一个复杂的函数,只是想知道如何在UDF中传递结果数组。
答案 0 :(得分:0)
将第一个参数传递为Variant并删除.Value
Option Explicit
Public Function ReverseTextToColumns(n As Variant, Optional D As String = " ") As String
Dim xArr
xArr = Application.WorksheetFunction.Transpose((n))
ReverseTextToColumns = Join(xArr, D)
End Function
单:
答案 1 :(得分:0)
问题似乎是这种情况:
$A$2:$A$5 < 3
返回FALSE
,这意味着将空字符串""
传递给函数。这与参数的类型不兼容 - Range
;以下功能:
Function TestRng(rng As Range) As Boolean
TestRng = True
End Function
在公式中使用时也会返回#VALUE!
:
=TestRng("")
我建议您创建Variant
类型的参数,并使用UDF中的VBA TypeName
函数来检查它是否实际上是Range
。
NB。你究竟是针对这种情况 - $A$2:$A$5 < 3
?将一系列细胞与数字进行比较是什么意思?