Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Große Mengen Daten in Listbox einlesen

Forumthread: 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
Anzeige

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
Anzeige
--))
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
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige