Thema
|
Datum
|
Von Nutzer
|
Rating
|
Antwort
|
|
22.03.2008 17:55:32 |
Sven |
|
|
Aw:Löschen von Arrays |
23.03.2008 14:12:15 |
Holger |
|
|
|
24.03.2008 01:07:23 |
Sven |
|
|
|
24.03.2008 09:56:48 |
Holger |
|
|
|
24.03.2008 19:00:47 |
Sven |
|
|
Von:
Holger |
Datum:
23.03.2008 14:12:15 |
Views:
1040 |
Rating:
|
Antwort:
|
Thema:
Aw:Löschen von Arrays |
Hallo Sven,
sei Arry(i,j) dein Array. Du kannst mit Dim Arry() das Array deklarieren. Mit ReDim Array(0,0) werden die Werte zurückgesetzt. Mit ReDim Preserve Array(a,b) wird das array ggf. erweitert, ohne dass die bisher gespeicherten Werte verloren gehen, wobei nur der letzte Index verändert werden kann. Sieh auch in die VBA-Hilfe.
Ich habe kein grundsätzliches Problem mit globalen Variablen. Aber überlege, ob nicht eine Private-Deklaration ausreicht. Du solltest keinen Allerweltsnamen verwenden, weil du sonst in Deklarationskonflikte bei anderen Makros kommen kannst. Ich setze große Arrays am Ende des Programms mit ReDim Arry(0,0) oder Erase Arry zurück.
Du kannst natürlich auch die Variablen an andere Prozeduren übergeben. Bei Arrays kannst du optional leere Klammern setzen oder einfach den Arraynamen verwenden. Bei Funktionen macht es Sinn, wenn aus den Array-Werten ein neuer Wert berechnet werden soll. Die Übergabe als Argument erfolg genauso.
sub Name (a()) oder sub Name (a)
...
end Sub
Aufruf der Prozedur in einer anderen mit
Name Arry() oder Name Arry
Ober- und untere Grenzen des übergebenen Array stellst du mit LBound und UBound fest.
Ich hoffe, dir geholfen zu haben
Holger
Sven schrieb am 22.03.2008 17:55:32:
Hallo Makro-Experten,
hätte da mal eine Frage.
Ich habe eine Schleife in der ein zweidimensionales Array beschrieben wird. Ich weiss vorher nicht wieviel Zeilen es hat aber wieviele Splaten. Und in jeden Schleifendurchlauf soll es geändert werden, also neue Inhalte eingefügt werden.
Da ist nun meine Frage wie ich dieses Array am besten deklariere und wieder am Schleifenanfang die Inhalte lösche?
Ich hatte hier zuerst über die Nutzung von Redim nachgedacht, aber in der Hilfe dann gelesen, dass redim nicht zum deklarieren beutzt werden soll. Ebenso muss man ja bei redim die Größe des Array angegeben. Wie kann ich wenn ich freie Arrayplätze habe effizient nur auf die belegten Felder zugreifen, nur mit einer Überprüfung emptycell oder so was?
Eine zweite Frage: Ich habe ein großes "Hauptarray" was verschiedene Prozeduren durchläuft. Man soll ja eigentlich kaum globale Variablen benutzen und immer im Prozeduraufruf Variablen übergeben. Macht dies wenn ich in jedem Unterprogramm dieses Hauptarray z.B.Array(100,10) ändere überhaupt Sinn und ist es überhaupt möglich, da Funktionen ja nur ein Wert zurückgeben?
Grüße, Sven |
- 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
Bitte geben Sie ein aussagekräftiges Thema an.
Bitte geben Sie eine gültige Email Adresse ein!
- 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
|
|
22.03.2008 17:55:32 |
Sven |
|
|
Aw:Löschen von Arrays |
23.03.2008 14:12:15 |
Holger |
|
|
|
24.03.2008 01:07:23 |
Sven |
|
|
|
24.03.2008 09:56:48 |
Holger |
|
|
|
24.03.2008 19:00:47 |
Sven |
|
|