AW: ListBox
10.06.2007 11:20:43
Luschi
Hallo Erich,
wenn Du Daten aus Access in die Excel-Listbox schreibst, dann werden alle Daten
in der Listbox zu Text, auch wenn sie wie Zahlen aussehen.
Deshalb muß beim Schreiben der Daten aus der Listbox in die Tabellenzellen eine
Typ-Konvertierung in die numerischen Werte durchgeführt werden.
Hier ein Beispiel:
Dim index As Long, i As Long, j As Integer
With Worksheets("Daten_Leistung")
i = 2
For index = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(index) Then
For j = 0 To Me.ListBox1.ColumnCount - 1
Select Case j
Case 2, 4
'die 3. und 5. Spalte sind in der MDB-Datei Zahlen mit Komma _
oder Währung
.Cells(i, j + 2) = CDbl(Me.ListBox1.List(index, j))
Case 5
'die 6. Spalte in der MDB sind ganzzahlige Werte (Integer)
.Cells(i, j + 2) = CInt(Me.ListBox1.List(index, j))
Case Else
'alle übrigen Spalten sind Text
.Cells(i, j + 2) = Trim(Me.ListBox1.List(index, j))
End Select
Next
i = i + 1
End If
Next
End With
Für den Datenaustausch von Access zu Excel per ADODB habe ich folgendes dynamisches
Beispiel erstellt:
https://www.herber.de/forum/messages/876650.html
Hier wird die Select-Abfrage mit der Where-Bedingung nicht von Excel aus gestartet, sondern
in eine dummy-Abfrage der MDB-Datei geschrieben (per ADOX, einer Zusatzkomponente zu ADODB).
Von Excel aus wird dann nur noch die dummy-Abfrage aufgerufen "Select ... From dummyView".
Ziel ist es, die Datenmenge, die per ADODB von der MDB an Excel schickt werden, auf die gefilterten
Datensätze zu begrenzen und damit an Geschwindigkeit zu gewinnen.
Gruß von Luschi
aus klein - Paris