在VBA中用UDF中的长string错误#VALUE在Excel中输出

我使用下面的UDF来连接引用来包含结果
ref in ('ref1', 'ref2', ...)一个SQL查询。

UDF 正常工作正常 ,但是当我需要把一个巨大的引用列表,
我在Excel中获得#VALUE

我已经看过这个答案 ,但是我不能设法使我的UDF工作。

我试图改变函数的types从String Variant (明确),
但它并没有改变一个事物…

我也试过ConcatSQL2 = A(0)ConcatSQL2 = A的输出,
Dim A(0 To 0) As String的声明,…又一次它不工作…
我正在用尽想法

有关信息, 结果string预计将是约22万长
为了帮助您生成大量的文字,您可以在这里使用Lorem Ipsum发生器!

 Public Function ConcatSQL2(Plage As Range, Optional Doublon As Boolean = True) Dim A() As String, _ Cel As Range ReDim A(0) A(0) = "('" For Each Cel In Plage.Cells If (Cel.Value <> "" And (InStr(1, A(0), Cel.Value) = 0 Or Doublon)) Then A(0) = A(0) & Cel.Value & "', '" End If Next A(0) = Left(A(0), Len(A(0)) - 3) & ")" ConcatSQL2 = A(0) End Function 

关于@ Rory的评论:

32767是单元格中的最大字符数

我决定将输出写入文本文件 ,以后再使用!

这是最终的解决scheme

 Public Function ConcatSQL2(Plage As Range, Optional Doublon As Boolean = True) Dim A(0 To 0) As String, _ myFile As String, _ Cel As Range 'ReDim A(0) A(0) = "('" For Each Cel In Plage.Cells If (Cel.Value <> "" And (InStr(1, A(0), Cel.Value) = 0 Or Doublon)) Then A(0) = A(0) & Cel.Value & "', '" End If Next A(0) = Left(A(0), Len(A(0)) - 3) & ")" myFile = "Path\FileName.txt" Open myFile For Output As #1 Write #1, A(0) Close #1 ConcatSQL2 = A End Function