Folgendes Excel-Makro:
Sub Makro1()
Sheets(„Tabelle1“).Select
'Verbindung zur Datenbank
str_con = Array(„ODBC;DSN=xxx;UID=xxx:stuck_out_tongue_winking_eye:WD=xxx“)
str_sql = Array(„SELECT name || ‘ ’ || vorname FROM adressen“)
With ActiveSheet.QueryTables.Add(Connection:=str_con, Destination:=Range(„A25“), Sql:=str_sql)
.FieldNames = False
.Refresh
End With
Const strListe As String = „Hans Müller, Bernd Huber, Franz Meyer“
With Range(„A1“).Validation
.Delete
.Add xlValidateList, , xlEqual, strListe
End With
End Sub
Es soll ein DropDown Feld in A1 erzeugt werden mit dem Ergebnis aus der Oracle-Abfrage str_sql.
Über die Konstante strListe wird ein DropDown Feld erzeugt. (unterer Teil des Makros)
Wie kann ich die str_sql in die “.Add xlValidateList, …“ einbinden?
Vielen Dank für die Hilfe
mlyxs
Es soll ein DropDown Feld in A1 erzeugt werden mit dem
Ergebnis aus der Oracle-Abfrage str_sql.
Über die Konstante strListe wird ein DropDown Feld erzeugt.
(unterer Teil des Makros)
Wie kann ich die str_sql in die “.Add xlValidateList, …“
einbinden?
Hallo Mlyxs,
ich benutze Queries höchst selten und kenne mich da nicht so aus.
Bau mal in deinen Code unten ein:
Dim P
Worksheets.Add after:=Worksheets(Worksheets.Count)
For P = 1 To Len(str\_sql)
Cells(P, 1) = Asc(Mid(str\_sql, P, 1))
Next P
und zeige mal hier was dann im neuen Blatt in Spalte A steht.
Btw.: Dim und Const gehört immer ganz an den Anfang des Codes.
Beim Start eines Codes werden sie immer zuerst ausgeführt, völlig gleich wo sie stehen. Sowas ist falsch gedacht:
If irgendwas Then
Dim x as String
End If
Dim x wird sofort bei Codestart kompiliert, egal ob das If erfüllt ist.
Gruß
Reinhard