簡體   English   中英

錯誤#VALUE,VBA中UDF中的長字符串用於Excel中的輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM