Anzeige
Archiv - Navigation
1680to1684
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Große Mengen Daten in Listbox einlesen

Große Mengen Daten in Listbox einlesen
18.03.2019 11:00:06
sigrid
Guten Morgen,
ich habe eine Userform mit einer Listbox,
funktioniert einwandfrei, allerdings bei
12000 Zeilen dauert es sehr lange, die Zeilen einzulesen !
Public Sub Array_fuellen()
Dim lLetzte   As Long     ' letzte belegte Zeile in Spalte A
Dim lZeile    As Long     ' For/Next Zeilen-Zähler
Dim lIndex    As Long     ' der Zeilen-Index im Array
Dim iSpalte   As Integer  ' der Spalten-Index im Array
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Worksheets("Datenbank")
lLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
For lZeile = 3 To lLetzte
'If Not IsEmpty(Cells(lZeile, 8)) Then ' Spalte H nicht leer?
lIndex = lIndex + 1
ReDim Preserve aTmp(1 To 10, 1 To lIndex)
For iSpalte = 1 To 9
aTmp(iSpalte, lIndex) = Cells(lZeile, iSpalte).Text
aTmp(10, lIndex) = lZeile
Next iSpalte
'End If
Next lZeile
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Gibt es was schnelleres ?
mfg sigrid

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Große Mengen Daten in Listbox einlesen
18.03.2019 13:06:57
Matthias
Moin!
Was bei deinem Code m.E. viel Zeit kostet, ist der Zugriff auf das Blatt und dass du bei jeder Zeile die in das Array geht, dein Array neu dimensionierst.
Ich würde gleich am Anfang das Array einmal mit der richtigen Anzahl dimensionieren. Dazu im Bereich der Spalte 8 die nichtleeren Zeilen auslesen - FUnktin counta. MIt dem Wert dann einmal am Anfang Redim machen.
Um die Zugriffe auf das Blatt zu minimieren, das vorher in den Speicher einlesen.
bspw. dim daten
daten = worksheets("Datenbank").range("A1:H" & lLetzte)
danach das cells mit daten ersetzen bsow. daten(lzeile,8)
Damit sind die ganzen DAten im Speicher.
VG
Anzeige
AW: Große Mengen Daten in Listbox einlesen
18.03.2019 15:21:28
sigrid
Hallo Matthias,
ich weiß nicht wie ich es anwenden soll ?
Bitte mal helfen,
danke im Voraus.
mfg sigrid
AW: Große Mengen Daten in Listbox einlesen
18.03.2019 16:15:20
sigrid
Hallo Matthias,
habe dies gefunden, getestet und die Daten waren sehr schnell geladen.
mfg
sigrid
Dim i
Sheets("Datenbank").Activate
i = ActiveSheet.UsedRange.Rows.Count
With ListBox1
.ColumnCount = 8
.ColumnHeads = True
.RowSource = "Datenbank!A3:H" & i
.ColumnWidths = _
("1,3 cm;1,2 cm;1,2 cm;1,4 cm;2 cm;4 cm;4 cm;3,5 cm;0,9 cm;")
End With
--))
18.03.2019 16:15:44
sigrid
AW: --))
18.03.2019 16:28:23
Matthias
MOin!
MIt RowSource kann man auch arbeiten - je nachdem, was man mit den Daten machen will. Aber hast du in deinem Ausgangscode die Daten nicht "gekippt"? Also die Zeilen in Spalten umgewandelt? Das geht bei RowSource nicht. Weiß aber nicht, ob du das Array vor dem Zuweisen an die Listbox nochmal transponiert hattest.
Falls du noch eine Lösung mit deinem Array brauchst, einfach nochmal melden.
VG
Anzeige
Mach ich, Matthias super, danke für die Info !
18.03.2019 16:53:06
sigrid

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige