[英]Error #VALUE with long string in UDF in VBA for output in Excel
我使用下面的UDF連接引用以將結果包含在
像ref in ('ref1', 'ref2', ...)
的SQL查詢。
UDF 通常可以正常工作 ,但是當我需要放置大量引用時,
我在Excel中得到#VALUE
。
我已經看過這個答案 ,但是我無法使UDF正常工作...
我試圖將函數的類型從String
更改為Variant
(顯式),
但這並沒有改變任何事情...
我還嘗試了ConcatSQL2 = A(0)
和ConcatSQL2 = A
作為輸出,
Dim A(0 To 0) As String
聲明的Dim A(0 To 0) As String
,...又一次不起作用...
我的想法不多了...
對於信息, 結果字符串預計約為220k長 ...
為了幫助您生成大量文本,您可以在此處使用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是一個單元格中的最大字符數
我決定將輸出寫入一個文本文件中 ,然后再使用!
這是最終的解決方案
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.