Макросы Excel - слишком много продолжений строк - PullRequest
9 голосов
/ 11 мая 2010

У меня «большой» SQL-запрос (например, 200 строк) ...

dim query as string
query = "..................................." & _
        "..................................." & _
           .... Like a lot lines later...
        "..................................."

function query,"sheet 1"

Когда я делаю это, Excel говорит: «Слишком много продолжений строки».

Каков наилучший способ избежать этого?

Ответы [ 4 ]

10 голосов
/ 11 мая 2010

Есть только один способ - использовать меньше продолжений.

Это можно сделать, поместив больше текста в строку или используя конкатенацию, выраженную по-другому:

query = ".........."
query = query & ".........."
query = query & ".........."

Но лучше всего загрузить текст из внешнего источника в целом.

1 голос
/ 11 мая 2010

Разделить запрос на несколько разделов:

query = _
  "............" & _
  "............" & _
  "............"
query = query & _
  "............" & _
  "............" & _
  "............"
query = query & _
  "............" & _
  "............" & _
  "............"
1 голос
/ 11 мая 2010

Пока я нашел это ...

Call AddToArray(query, "...")
Call AddToArray(query, "...")
... a lot lines later...
Call AddToArray(query, "...")

* изменить: Забыл добавить:

Sub AddToArray(myArray As Variant, arrayElement As Variant)

If Not IsArrayInitialized(myArray) Then
    ReDim myArray(0)
    myArray(0) = arrayElement
Else
    ReDim Preserve myArray(UBound(myArray) + 1)
    myArray(UBound(myArray)) = arrayElement
End If

End Sub

Источник: текст ссылки X (спасибо

(все еще жду лучших способов сделать это ...) спасибо: P

0 голосов
/ 27 мая 2019

почему бы не использовать VBA, чтобы помочь с конкатенацией VBA?

Проверьте этот мой код (он очень примитивен и не стесняйтесь его настраивать), он в основном берет все данные, которые вы имеете на рабочем листе под названием «Fast_string» в столбцах «A: E», а в столбце F он подготавливает вам код для объединения используется предварительная переменная "prelim_string". Вы просто используете это, а затем скопируйте и вставьте решение из столбца F в свой код ... пожалуйста;)

Sub FAST_STRING()
Dim cel As Range, lastcel As Range, prel_r As String, i As Integer, cr As Integer
With ThisWorkbook.Worksheets("Fast_string")
Set lastcel = .Cells(10000, 1).End(xlUp)
For Each cel In .Range(.Cells(1, 1), lastcel)
    cr = cel.row
    prel_r = ""

    For i = 1 To 5
     If .Cells(cr, i) = "" Then
        prel_r = prel_r & "     "
     Else
        prel_r = prel_r & " " & Replace(.Cells(cr, i).Value, """", """""")
     End If
    Next i

    If cr = 1 Then
         prel_r = "Prelim_string =" & """" & prel_r & """" & " & chr(10) & _"
    ElseIf cr / 20 = Round(cr / 20) Then
         prel_r = "Prelim_string = Prelim_string & " & """" & prel_r & """" & " & chr(10) & _"
    Else
         prel_r = """" & prel_r & """" & " & chr(10) & _"
    End If
    If cr = lastcel.row Or (cr + 1) / 20 = Round((cr + 1) / 20) Then prel_r = Left(prel_r, Len(prel_r) - 14)
    cel(1, 6) = prel_r
Next cel
End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...