J'ai une "grande" requête SQL (comme 200 lignes) ...
dim query as string query = "..................................." & _ "..................................." & _ .... Like a lot lines later... "..................................." function query,"sheet 1"
4 Réponses :
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
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: p> Mais le meilleur est de charger le texte d'une source externe, dans son ensemble. P> p>
diviser la requête en plusieurs sections:
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
É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 i>