Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
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

Array zusätzlich mit 'Erase' löschen?

Array zusätzlich mit 'Erase' löschen?
13.05.2020 13:50:32
Andreas
Hallo VBA Freunde,
in den letzten Wochen arbeitete ich an ein paar Codeideen, welche z.T. intensiv mit großen Arrays arbeiten. Dabei stieß ich auf den Erase Befehl, welchen ich innerhalb der Schleifen, welche das Array aufbauen nicht einsetze, da ich immer wieder mit ReDim y (1 to 1) starte.
Aber: Wenn die Prozedur einmal durchgelaufen ist, sollte ich dann das Array mit 'Erase' löschen ODER werden Arrays bei erreichen von 'End Sub' automatisch gelöscht, und der Speicher freigegeben? Deklariert ist es als 'Dim y()' innerhalb der Sub. Gilt gleiches für große Collections? Werden diese bei erreichen von 'End Sub' auch gelöscht und der Speicher wieder freigegeben?
Ich habe nach dieser Fragestellung in verschiedenen Wortkonstellationen gesucht, aber keine eindeutige Antwort finden können.
Weiß jemand hier im Forum wie Excels VBA sich hier verhält?
Vielen Dank und Grüße, Andreas

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

Betreff
Datum
Anwender
Anzeige
AW: Array zusätzlich mit 'Erase' löschen?
13.05.2020 14:08:25
Daniel
Hi
meines wissens nach werden normale Variablen und damit auch Arrays, die innerhalb der Sub deklariert sind, gelöscht und ein Erase ist somit unnötig.
ggf erforderlich wäre das Erase wenn die Variable als STATIC deklariert wäre oder wenn es sich um Projekt- oder Modulweit gültige Variablen handelt, welche nach Makrolauf im Speicher erhalten bleiben und somit u.U. den Speicherplatz belegen, den dann andere Makros benötigen.
ansonsten einfach das Erase mal weglassen und ein bisschen testen.
Wenn dadurch Probleme entstehen, nimmt man es halt wieder rein.
Gruß Daniel
Im Prinzip* liegt Daniel völlig richtig, ...
13.05.2020 15:46:18
Luc:?
…Andreas,
aber es gibt auch andere Auffassungen, die möglicherweise von anderen ProgrammierSprachen beeinflusst sind u/o mit Verschlechterungen bei neuen xlVBA-Versionen rechnen.
Allerdings kann mitunter sogar das Löschen am PgmEnde zu Fehlern führen. Das musste ich zu meinem Erstaunen erleben, als ich mal mehrere Variant-Variablen, die zwischenzeitig Arrays aufnahmen (wie wohl auch bei dir) am PgmEnde löschen wollte. Ein oder zwei davon reagierten sowohl auf Empty-Zuweisung als auch Erase mit einer Fehler-Auslösung → Ursache mir bisher unbekannt…
Gruß, Luc :-?
* Hallo, Lupo…! ;-]
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
AW: Im Prinzip* liegt Daniel völlig richtig, ...
13.05.2020 15:58:19
Daniel
warum nur "im Prinizp" Luc?
dass es andere Auffassungen gibt, mag sein, aber wenn die daher kommen, dass es in anderen Programmiersystemen so ist, dann ist das doch Unsinn.
Da muss man jedes Programmiersystem für sich betrachten.
Gruß Daniel
Prinzip ist eben Prinzip! Ausnahmen bestätigen es!
13.05.2020 20:22:37
Luc:?
Nur ist dabei irrelevant! :-]
Luc :-?
AW: Prinzip ist eben Prinzip! Ausnahmen bestätigen es!
13.05.2020 23:01:41
Daniel
du hättest auch schreiben können "Daniel hat recht"
warum nicht?
AW: Prinzip ist eben Prinzip! Ausnahmen bestätigen es!
14.05.2020 11:41:53
Andreas
Lieber Daniel, lieber Luc,
vielen Dank Euch beiden für die Antworten und die Diskussion. Meine Vermutung, dass ein lokal deklariertes Array, Dim y(), am Ende einer Sub gelöscht wird, sehe ich bestätigt und ich werde somit auf ein Erase verzichten, um den Speicher am Ende einer Prozedur wieder freizugeben.
Vielen Dank Euch Beiden!
Beste Grüße, Andreas
Anzeige
Wie schön, dass Du es kapiert hast, Daniel
14.05.2020 12:26:13
lupo1
Luc hat eine meisterhafte Falle designt ...
14.05.2020 12:29:07
lupo1
... und Du bist mit dem Kopf voran hineingetappt.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige