12
votes

Excel Macros - Trop de continuations de ligne

J'ai une "grande" requête SQL (comme 200 lignes) ...

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

function query,"sheet 1"


3 commentaires

Écrivez une requête plus courte: P


MSDN - Trop de continuations de ligne


"Votre code comporte plus de 25 lignes physiques reliées avec des caractères de continuation de ligne ou plus de 24 caractères de continuation de ligne consécutifs en une seule ligne. Faites de certaines des lignes constitutives physiquement plus longtemps pour réduire le nombre de caractères de continuation de la ligne nécessaire, ou casser la construction dans plus d'une déclaration. " - MSDN


4 Réponses :


1
votes

Jusqu'à présent, j'ai trouvé cela ...

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


0 commentaires

11
votes

Il n'y a qu'un seul moyen - d'utiliser moins de continuations.

Ceci peut être fait en mettant plus de texte sur une ligne ou en utilisant la concaténation exprimée différemment: xxx

Mais le meilleur est de charger le texte d'une source externe, dans son ensemble.


0 commentaires

3
votes

diviser la requête en plusieurs sections: xxx


0 commentaires

0
votes

Pourquoi ne pas utiliser VBA pour aider avec la concaténation VBA?

Vérifiez ce code de mien (il est très primitif et n'hésitez pas à l'ajuster), il prend essentiellement les données que vous avez sur la feuille de calcul appelé "fast_string" dans les colonnes "A: E" et dans la colonne F Il vous prépare le code de la concaténation à l'aide de la variable préliminaire "préelim_string". Vous venez d'utiliser cela puis de copier-coller la solution de la colonne F dans votre code ... vous êtes le bienvenu;) p>

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


0 commentaires