Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1048to1052
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
ComboBox - das Füllen dauert sehr lange
09.02.2009 09:56:01
tco99

Hallo zusammen,
ich habe in einer Userform eine ComboBox, die mit Werten aus den Spalten des ersten Worksheets gefüllt wird. Dabei werden doppelte Werte ausgefiltert und die Liste sortiert. Das Makro habe ich gefunden und für mich angepasst. Es funktioniert auch, jedoch braucht es sehr lange, bis die ComboBox gefüllt ist. Es dauert so ca. 10 Sekunden, wenn ich die Spalten A bis G haben möchte. So sieht mein Code aus:

Sub ComboBoxGerätetypenFüllen()
Übersicht.ComboBox2.Clear
'Werte aus Spalte A
Dim dic As Object
Dim xKey As Variant
Dim iRow As Long, ALetzte As Long
ALetzte = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row, 65536)
Set dic = CreateObject("scripting.dictionary")
For iRow = 1 To ALetzte
If Not IsEmpty(Cells(iRow, 1)) Then
xKey = Cells(iRow, 1).Value
dic(xKey) = 0
End If
Next
For Each xKey In dic
Übersicht.ComboBox2.AddItem xKey
Next
dic.RemoveAll
Set dic = Nothing
'Werte aus Spalte B
Dim dic As Object
Dim xKey As Variant
Dim iRow As Long, ALetzte As Long
ALetzte = IIf(IsEmpty(Range("B65536")), Range("B65536").End(xlUp).Row, 65536)
Set dic = CreateObject("scripting.dictionary")
For iRow = 1 To ALetzte
If Not IsEmpty(Cells(iRow, 2)) Then
xKey = Cells(iRow, 2).Value
dic(xKey) = 0
End If
Next
For Each xKey In dic
Übersicht.ComboBox2.AddItem xKey
Next
dic.RemoveAll
Set dic = Nothing
'Werte aus Spalte C
Dim dic As Object
Dim xKey As Variant
Dim iRow As Long, ALetzte As Long
ALetzte = IIf(IsEmpty(Range("C65536")), Range("C65536").End(xlUp).Row, 65536)
Set dic = CreateObject("scripting.dictionary")
For iRow = 1 To ALetzte
If Not IsEmpty(Cells(iRow, 3)) Then
xKey = Cells(iRow, 3).Value
dic(xKey) = 0
End If
Next
For Each xKey In dic
Übersicht.ComboBox2.AddItem xKey
Next
dic.RemoveAll
Set dic = Nothing
Call ComboBoxGerätetypenSortieren
Übersicht.ComboBox2.ListIndex = 0
Übersicht.ComboBox2 = ""
End Sub



Sub ComboBoxGerätetypenSortieren()
Dim Letzter As Integer, Naechster As Integer
Dim i As String
With Übersicht.ComboBox2
For Letzter = 0 To .ListCount - 1
For Naechster = Letzter + 1 To .ListCount - 1
If .List(Letzter) > .List(Naechster) Then
i = .List(Letzter)
.List(Letzter) = .List(Naechster)
.List(Naechster) = i
End If
Next Naechster
Next Letzter
End With
End Sub


Ich habe den Code hier gekürzt hineinkopiert, frage normalerweise Spalten A bis E und G bis H ab.
Ich habe versucht, selbst für mehr Geschwindigkeit zu sorgen, in dem ich die folgende Zeile angepasst habe, jedoch ohne Erfolg:
Vorher:
ALetzte = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row, 65536)
Nachher:
ALetzte = IIf(IsEmpty(Range("A2000")), Range("A2000").End(xlUp).Row, 2000)
Und so weiter ...
Hat jemand eine Idee, warum das trotzdem so lange dauert, auch wenn ich nur bis Zeile 2000 durchsuchen lasse?
Gruß
Erdogan

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

Betreff
Datum
Anwender
Anzeige
AW: ComboBox - das Füllen dauert sehr lange
09.02.2009 10:17:00
Ramses
Hallo
Das sind ja zig tausende von schleifen, und die Sortierschleife potenziert das ganze auch noch.
du hast zwei varianten aus meiner Sicht:
Alle Daten in ein Array einzulesen und von Dort aus über das Dictonary-Object einzulesen und zu sortieren.
Oder,... und das kannst du selber machen und ist ziemlich sicher genauso schnell.
Erstelle mit dem Makro eine leere temporäre Tabelle
Kopiere alle deine Daten aus den Spalten in diese Tabelle in Spalte A untereinander.
(wie du die letzte freie Zelle bestimmst, weisst du ja)
Anschliessen in der Spalte Daten - Filter - spezial Filter Option: Ohne Duplikate in die Nachbarspalte kopieren
dort anschliessend von EXCEL sortieren lassen
Die Daten in die Combobox einlesen
Temporäre Tabelle löschen.
Das ganze kannst du, mit ausnahme der Kopieraktion, mit dem makrorekorder aufzeichnen und anschliessend optimieren
Gruss Rainer
Anzeige
AW: ComboBox - das Füllen dauert sehr lange
09.02.2009 10:45:17
tco99
Hallo Rainer,
dass mit dem temporären Blatt ist eine super Idee. Ich habe es auch gleich umgesetzt. Da sich die Inhalte öfter ändern, lösche ich das temporäre Blatt nicht, sondern lasse es mit dem Namen "Hilfsblatt" weiter bestehen, leere es nur nach der Erstellung der Liste.
Wenn man die Bildschirmaktualisierung abschaltet, sieht es auch nicht mehr so wild aus :-)
Ich bedanke mich ganz herzlich!
Viele Grüße
Erdogan
AW: ComboBox - das Füllen dauert sehr lange
09.02.2009 10:26:25
Tino
Hallo,
ich möchte mir Deinen Code jetzt nicht antun,
habe Dir ein Beispiel aufgebaut wie ich es machen würde.
https://www.herber.de/bbs/user/59263.xls
Gruß Tino
Anzeige
AW: ComboBox - das Füllen dauert sehr lange
09.02.2009 10:58:03
tco99
Hallo Tino,
danke für deine Hilfe und die Datei, die du für mich gemacht hast. Ich habe gesehen, dass die ComboBox nur mit den Werten der Spalte A gefüllt wird. Ich habe eine zweite Spalte gemacht und sie mit Zahlen gefüllt. Dann habe ich versucht, den Code anzupassen, jedoch ohne Erfolg.
Vielleicht habe ich meine Frage nicht gut genug formuliert. Die ComboBox sollte sich mit den Inhalten mehrerer Spalten füllen.
Ich sende dir nochmal die Datei mit einer zweiten Spalte.
https://www.herber.de/bbs/user/59264.xls
Bitte mache dir keine große Mühe damit, denn die Lösung von Rainer (Ramses) ist schon super.
Vielen Dank,
Erdogan
Anzeige
AW: ComboBox - das Füllen dauert sehr lange
09.02.2009 11:32:22
Tino
Hallo,
auch wenn Du die Lösung schon bekommen hast, hier noch die geänderte Version.
https://www.herber.de/bbs/user/59266.xls
Gruß Tino
AW: ComboBox - das Füllen dauert sehr lange
09.02.2009 13:40:21
tco99
Hallo Tino,
das ist ja cool, die ComboBox hat gleich zwei Spalten :-)
Beide Spalten sind sortiert. Auch wenn ich auf die Zahl in der ComboBox klicke, wird der Buchstabe ausgewählt. Ich weiß schon, wo ich das verbauen kann :-)
Vielen Dank und viele Grüße
Erdogan

53 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige