Excel VBA – 数组公式返回#VALUE! (错误2015)以防单元包含超过255个字符的情况
亲爱的,我使用一个数组公式的结果传递给VBAmacros,这意味着公式的结果作为数组传递给我的macros。
在某些情况下,我在数组中获得#VALUE(错误2015),我不知道为什么。 当我和受影响的细胞一起玩的时候,当细胞有相当数量的字符(~3000个字符)时,就会发生这种情况。
有没有人有线索我可以尝试解决isuse?
式:
{=arrayToCSV(removeElementsFrom2DimArray(IF('sheet'!$G$1:$G$2000=A1;'sheet'!$F$1:$F$2000)))}
IF('sheet'!$G$1:$G$2000=A1;'sheet'!$F$1:$F$2000)
部分返回一个数组,如{FALSE, FALSE, FALSE... Value, Value, FALSE , ...}
。 这一个我传递给我的mVBA函数removeElementsFrom2DimArray
去除FALSE元素
现在看来IF('sheet'!$G$1:$G$2000=A1;'sheet'!$F$1:$F$2000)
在某些情况下会返回#VALUE(Error 2015)
{FALSE, FALSE, FALSE... #VALUE!, Value, FALSE , ...}
Function removeElementsFrom2DimArray(ByRef arr() As Variant, Optional value As Variant = False) As String() On Error GoTo ErrorHandler Dim coll As New Collection Dim i As Integer If (IsArray(arr)) Then For i = 1 To UBound(arr, 1) If (arr(i, 1) <> value) Then --> Here happens the error that arr(i, 1) return #VALUE! Error 2015. Why? coll.Add (arr(i, 1)) End If Next i End If removeElementsFrom2DimArray = collectionToArray(coll) Exit Function ErrorHandler: MsgBox Err.Description Resume End Function
更新 :
-
我试图修改以通过作为
Variant
或ByVal
ARR。 它没有任何区别。 -
我试图修改,作为数组
arr()
和不使用()
来传递arr。 它没有任何区别。 -
如果我减less受影响的单元格
'sheet'!$F$1:$F$2000
的字符数'sheet'!$F$1:$F$2000
到低于256个字符,那么它的工作原理! -
如果我只用公式
{=IF(sheet!$G$1:$G$2000=A1;sheet!$F$1:$F$2000)}
(数组公式),那么它也可以工作!
所以我认为从本地公式传递数组到自己的函数是有限制的? 所以数组中超过255个字符的值会被#VALUE传递! 错误?
任何想法? 我正在使用Excel 2010 Plus(v14.0.7)