Danke, dass du deine Posts gegenseitig verlinkt hast.
Zu deinem Problem:
Wenn ich dich richtig verstanden habe, hast du in einer Spalte A lauter Kundenummern stehen.
z.B.
|
A |
1 |
68705335 |
2 |
25510015 |
3 |
92566660 |
4 |
85398822 |
5 |
20468602 |
und willst jene in dein SQL einbauen.
SELECT kdname FROM datenbank WHERE kdnummer IN (...)
Du bist gar nicht mehr so weit davon entfernt. ;)
Option Explicit
Sub Test()
Dim sql As String
Dim vntKNr As Variant
With Worksheets("Tabelle1") '<- Tabellenblatt in dem die Daten liegen
'Bereich: A2 bis letzte Zeile mit Inhalt (in Spalte A, von unten nach oben suchen)
Set vntKNr = .Range("A2", .Cells(.Rows.Count, "A").End(xlUp))
'wenn wir unsere Startzeile/-zelle (hier A2) unterschreiten, dann gibt es keine Daten
If vntKNr.Row < 2 Then
MsgBox "Keine Daten vorhanden.", vbExclamation
Exit Sub
End If
End With
vntKNr = vntKNr.Value()
vntKNr = WorksheetFunction.Transpose(vntKNr)
vntKNr = Join(vntKNr, ", ")
sql = "SELECT kdname FROM datenbank WHERE kdnummer IN (" & vntKNr & ")"
Debug.Print "SQL-Query := """; sql; """"
End Sub
... die Variable sql hat dann, dem obigen Beispiel treu bleibend, folgenden Inhalt :
SELECT kdname FROM datenbank WHERE kdnummer IN (68705335, 25510015, 92566660, 85398822, 20468602)
Das ist dann deine SQL-Abfrage, die du CommandText übergibst.
'...
With ActiveWorkbook.Connections(odc_pfad).ODBCConnection
'...
.CommandText = Array(sql)
'...
End With
'...
|