Großer Array /Combox
28.01.2019 00:07:57
Robert
Ich habe schon oft von den hilfreichen Informationen hier durch einfaches Suchen profitiert - jetzt muss ich einmal konkret fragen und hoffe auf eure Unterstützung.
Aufgabenstellung:
Ich habe Daten in einer Tabelle, wobei die Kombination aus PLZ und Ortsname die Schlüssel sind. Die Daten sind für Deutschland und Österreich in jeweils einem Tabellenblatt der selben Arbeitsmappe.Ich brauche die Daten für eine Berechnung in einer Userform in der selben Arbeitsmappe.
In der Userform habe ich unter anderem 3 Comboboxen.
1. Auswahl eines Landes
2. Auswahl einer PLZ
3. Auswahl eines Ortes
Die Länder-Combobox fülle ich beim Initialisieren mit DE, AT, I, CH. Beim Start ist erstmal kein Land ausgewählt.
Wird jetzt die Combobox geändert (speziell auf DE oder AT), wird ein ARRAY entsprechend der Zeilen und Spalten erstellt und mittels Schleife alle Zellen des Tabellenblattesin die Felder des ARRAY geschrieben. Dann werden Combobox 2 und 3 über eine Schleife mit den entsprechenden Einträgen aus dem ARRAY gefüllt.
vereinfacht:
combobox.clear
usedrange.rows.count
redim array...
for i=2 to n
for j=1 to 7
array(i-2,j-1)=.cells(i,j)
next j
combobox2.additem array(i,1)
combobox3.additem array(i,2)
next i
(code nur vereinfacht zur Veranschaulichung - richtig sieht er natürlich etwas komplexer und mit korrekter Syntax aus)
Das sind für DE über 14Tsd. Zeilen á 7 Werte, für AT ein paar weniger.
Das Problem, was ich bis jetzt nicht lösen konnte, ist die Zeit.
Aufgrund der vielen Zeilen dauert es beim Ändern des Landes ca. 20sec, bis der ARRAY und die Comboboxen gefüllt sind.Das ist einfach unschön.
Ziel ist es, dass der User eine PLZ in Combobox2 auswählt/einträgt, Combobox3 springt dann gekoppelt über den Listindex auf den 1. Ort mit der PLZ (aber es haben u.U. mehrere Orte die gleiche PLZ, so dass danach in Combobox3 ggf. der Ort korrigiert wird. Über den Listindex hole ich mir aus der entsprechenden Zeile des ARRAY dann die weiteren Daten und schreibe sie zur Berechnung auf Variablen.
Wie gesagt - programmtechnis funktioniert alles - nur das füllen des ARRAY/der Comboboxen dauert zu lange.
Ich habe schon versucht, 2 ARRAYS bei der Initialisierung der Userform zu füllen und dann nur den Inhalt der Comboboxen beim Umschaltenauszutauschen - aber das hat zeitmäig das Problem auch nicht gelöst.
Zuerst hatte ich die PLZ-Eingabe als Textbox und wolltedann die Combobox3 nur mit den Orten füllen, die die gleiche PLZ haben, aber das war über die Suche im Tabellenblatt ein zeitliches Disaster, da ich ja wegen der mehrfach gleichen PLZ trotzdem durch alle Zeilen laufen musste.
Ich hoffe, einer von Euch hat die zündende Idee zur Lösung.
Vielen Dank schonmal vorab!