Thema Datum  Von Nutzer Rating
Antwort
19.12.2016 16:35:42 Johannes
NotSolved
19.12.2016 17:45:31 Gast98331
NotSolved
19.12.2016 18:07:21 Gast43059
NotSolved
19.12.2016 19:41:07 Gast42924
NotSolved
19.12.2016 20:25:00 Johannes
NotSolved
19.12.2016 20:41:32 Gast60101
Solved
20.12.2016 09:25:07 Johannes
NotSolved
20.12.2016 09:35:17 Johannes
NotSolved
Rot Mein Code ist zu kompliziert bzw. zu lang
20.12.2016 17:24:19 Gast67265
NotSolved
22.12.2016 14:28:49 Johannes
NotSolved
19.12.2016 18:50:34 Mackie
NotSolved
19.12.2016 20:24:12 Johannes
NotSolved
19.12.2016 20:40:33 Mackie
NotSolved

Ansicht des Beitrags:
Von:
Gast67265
Datum:
20.12.2016 17:24:19
Views:
749
Rating: Antwort:
  Ja
Thema:
Mein Code ist zu kompliziert bzw. zu lang
Hallo! Also vom Fehler kann man da nicht wirklich sprechen, da der Code ja funktioniert hat (nur langsam). Der Code hatte elend lange Schleifen zu bearbeiten und viele Zugriffe auf das Tabellenblatt. Es gibt einige Sachen die man beim Code beachten sollte. Hier zerhaut es mit das Format aber ich hoffe mal, du kannst trotzdem was damit anfangen: - unnötige Features ausschalten bspw. so wie hier: http://www.experto.de/office/excel/excel-vba-makros-turbo-schnell-machen.html - dann auf die genaue Deklaration der Variablen achten. Bei Zählern sind Variablen vom Typ Long schneller als die anderen (wenn keine Deklaration zählt der Typ variant), siehe auch hier: https://de.wikibooks.org/wiki/VBA_in_Excel/_Code-Optimierung - hier noch ein link: http://www.online-excel.de/excel/singsel_vba.php?f=60 Bei deinem Code war das "Problem", dass du viele Schleifendurchläufe hast. In diesen greifst du auf die Blätter zu - das kostet Zeit. Besser ist da immer die Werte komplett in ein Array einzulesen und nur in dem Array zu arbeiten (beim Code die Variablen tab1 und tab2). Die Überprüfung und Durchläufe im Array sind mit am schnellsten. Dann sollte man bei den Schleifen immer schauen (insb. wenn ziemlich lang), ob man die abbrechen kann. In der ersten habe ich das gemacht, bei der zweiten war es m.e. nicht möglich. Was im Code nicht drin ist aber nochmal ein plus bei der Geschwindigkeit sein könnte, ist auf Funktionen zurückzugreifen. Kommt aber immer auf den Code an. Bspw. könnte man an Stelle einer Schleife durch alle Spalten auch den Namen aus Tabelle 2 in Tabelle 1 suchen (find Methode). Könnte aber ggf. nicht viel bringen. Bei Schleifen bietet es sich zudem an (wenn möglich, hier wohl eher nicht), die Daten vorher zu sortieren. Zwei sortierte Listen kannst du noch schneller abgleichen (man merkt sich dabei den letzten Treffer und startet ab dem Punkt die nächste Suche). Soweit erstmal. Bis auf die Deklaration der Variablen und das Umschreiben in Arrays habe ich ja nichts geändert. Hinweise noch, wenn möglich mit Kommentaren arbeiten. Das hilft dir später mal zu erkennen was du wolltest und bei Hilfen im Forum ist es auch leichter für die, die helfen wollen. Ansonsten muss man sich erst am Code überlegen, was eigentlich das Ziel war. Bei weiteren Fragen einfach nochmal melden. Vllt. kopiere ich das nachher nochmal in besser lesebaren Code. VG

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
19.12.2016 16:35:42 Johannes
NotSolved
19.12.2016 17:45:31 Gast98331
NotSolved
19.12.2016 18:07:21 Gast43059
NotSolved
19.12.2016 19:41:07 Gast42924
NotSolved
19.12.2016 20:25:00 Johannes
NotSolved
19.12.2016 20:41:32 Gast60101
Solved
20.12.2016 09:25:07 Johannes
NotSolved
20.12.2016 09:35:17 Johannes
NotSolved
Rot Mein Code ist zu kompliziert bzw. zu lang
20.12.2016 17:24:19 Gast67265
NotSolved
22.12.2016 14:28:49 Johannes
NotSolved
19.12.2016 18:50:34 Mackie
NotSolved
19.12.2016 20:24:12 Johannes
NotSolved
19.12.2016 20:40:33 Mackie
NotSolved