Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1304to1308
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

Suchschleife viel zu langsam

Suchschleife viel zu langsam
27.03.2013 17:18:39
Jürgen
Hallo Forum,
Ich habe eine ForNext-Suchschleife, die vom Ergebnis her auch funktioniert.
Sie ist nur viel zu langsam.
Bei etwa 1000 zu durchsuchenden Zeilen mit sieben nicht aufeinander folgenden Spalten braucht die Routine bei etwa 400 gefundenen Einträgen etwa zwei bis drei Minuten.
Dabei erscheint im Kopf der UF auch der Hinweis. "Keine Rückmeldung".
Wie kann man den Code optimieren?
Den maßgeblichen Teil des Codes habe ich hier dargestellt.
Sub Ausw_Datenb()' Standardmodul
With ThisWorkbook
Set Wspt = .Sheets("Protokoll")
Set Wsda = .Sheets("Datenbank")
End With
Wsda.Activate
End Sub
Private Sub Stat_EO_Suchen()'Code innerhalb der UF
Dim SuchSpalte%, S_länge$, S_Zeile
S_länge = Wspt.Cells(Rows.Count, 21).End(xlUp).Row
If S_länge 
Insgesamt hat die Datei aber acht UF und entsprechenden Code, die ich aber der Inhalte wegen hier nicht komplett hochladen darf/kann.
Eine abgespekte Datei mit UF und gleichem Aufbau, bei der aber eben auch der gleiche Effekt auftritt, habe ich hier hochgeladen.
https://www.herber.de/bbs/user/84570.zip
Kann mir hier Jemand auf die Sprünge helfen?
Gruß
Jürgen

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchschleife viel zu langsam
27.03.2013 22:30:09
Matze

Private Sub Stat_EO_Suchen()'Code innerhalb der UF
Dim SuchSpalte%, S_länge$, S_Zeile
With Application
.EnableEvents = False
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
S_länge = Wspt.Cells(Rows.Count, 21).End(xlUp).Row
If S_länge 
teste mal , mal sehn was passiert
Matze

AW: Suchschleife viel zu langsam
27.03.2013 23:10:27
Jürgen
Hallo Matze,
nichts, bzw das Gleiche passiert.
Die Wartezeit ist identisch, zumal ich daß, was Du eingefügt hattest (ScreenUpdating = False) schon in der Ansteuerung vorgesehen hatte und zu berechnen gab es in der Tabelle ja nichts.
Gruß
Jürgen

Anzeige
AW: Suchschleife viel zu langsam
28.03.2013 00:18:45
Tino
Hallo,
dann schreibe deine Daten in ein Array und durchlaufe dieses in der Schleife.
Sollte um einiges schneller sein.
Beispiele sollte es massenhaft im Archiv usw. geben.
Gruß Tino

AW: Suchschleife viel zu langsam
28.03.2013 03:29:01
Jürgen
Hallo Tino,
habe nun bis ebend damit herum experimentiert und bin mittlerweile auch schon etwas spröde in der Birne.
Hinbekommen habe ich es aber nicht.
Ich muß aber auch dazu sagen, dass ich noch nie mit Arrays gearbeitet habe und daher wohl die Syntax auch nicht entsprechend anpassen konnte.
Gruß
Jürgen

AW: Suchschleife viel zu langsam
28.03.2013 09:43:44
Tino
Hallo,
mal ein ansatz
Private Sub Stat_EO_Suchen()
Dim SuchSpalte%, S_länge$, S_Zeile, myArray
S_länge = Wspt.Cells(Rows.Count, 21).End(xlUp).Row
If S_länge 
Gruß Tino

Anzeige
AW: Suchschleife viel zu langsam
28.03.2013 18:58:28
Jürgen
Hallo Tino,
das hat Super geklappt.
Es läuft in der Testmappe im Bereich von etwa einer Sek durch.
Im Gesamtprojekt eingegliedert läuft es mal sehr schnell, denn aber auch wieder langsamer.
Werde das noch einmal im Einzelschrittmodus prüfen, wo es hängen könnte.
Zudem muß ich mich jetzt wohl doch mal mit dem Thema "Array" auseinander setzen.
Hallo Daniel,
das ist ja doch eine eher unorthodoxe Methode, die aber gut funktioniert. Einen zeitlich nachweisbaren Unterschied in der Geschwindigkeit gab es im Vergleich zu Tinos Vorschlag m.E. nicht.
Hallo Thorsten,
nee zu langsam kann das nicht sein. Ich betreibe hier einen Laptop mit einem Intel Core i3 370M bei 2,6 GHz Taktfrequenz.
Im oberen Temperaturbereich wird er zwar langsamer aber dann arbeite ich im Kühlschrank weiter. ;)
Euch allen möchte ich für die Unterstützung danken.
Gruß
Jürgen

Anzeige
AW: Suchschleife viel zu langsam
28.03.2013 08:33:04
Oberschlumpf
Hi Jürgen
Is vllt ne blöde Frage, aber kann es vielleicht sein, dass dein PC nicht der Schnellste ist?
Ich nutze z Zt ein Notebook mit Intel I5 CPU, Win XP pro + 4 GB RAM.
Wenn ich im UF den Status "angefordert zum Test" auswähle + dann auf "Auswahl OK" klicke, dauert es vielleicht 1, maximal 2 Sekunden, bis in der Listbox 493 Treffer angezeigt werden.
Also, ich würde sagen, dass dein Code eigentlich ok ist.
Wobei es mit einem Array, wie Tino vorschlägt, natürlich vielleicht noch ein wenig schneller geht.
Ciao
Thorsten

AW: Suchschleife viel zu langsam
28.03.2013 09:45:43
daniel
Hi
mal als Inspirations-Ansatz:
gehte nicht in einer Schleife über alle Daten, sondern
1. filtere die Daten mit dem Autofilter nach dem Suchbegriff
2. kopiere die benötigten Spalten in das neue Tabellenblatt, in gefilterten Listen werden nur die sichtbaten Zeilen kopiert
3. schreibe von dort die daten in die Listbox. Wenn die Tabelle nur die Daten enthält die angezeigt werden sollen, geht das auch als ganzes:
Listbox1.List = Range("Linke obere Ecke der Daten").CurrentRegion.Value
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige