Anzeige
Archiv - Navigation
660to664
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
660to664
660to664
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dynamisches Array-Variable Größe-vgl. Vector/JAVA

Dynamisches Array-Variable Größe-vgl. Vector/JAVA
05.09.2005 09:19:53
Martin
Hallo Profis,
ich bräuchte ein Dynamisches Array in VBA vgl. mit einem Vector in JAVA.
Die Größe sollte vollkommen Variabel sein und sich einfach erweitern wenn
ich Daten ins Array speichern will.
Ich habe schon viele Foren durchsucht aber keiner konnte mir eine Lösung anbieten die akzeptabel war!!!
Bei einem ReDim werden ja die alten Einträge (soweit ich das jetzt ausprobiert habe) überschrieben!!!
Kann mir jemand weiterhelfen?
MfG

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamisches Array-Variable Größe-vgl. Vector/JAVA
05.09.2005 09:24:45
Heiko
Hallo Martin,
dazu braucht es keinen Profi, Auszug aus der VBA Hilfe zu Redim:
Schau mal auf das kleine Wörtchen Preserve !!!
ReDim-Anweisung

Wird auf Prozedurebene verwendet, um Speicherplatz für dynamische Datenfeldvariablen zu reservieren.
Syntax
ReDim [Preserve] VarName(Indizes) [As Typ] [, VarName(Indizes) [As Typ]] . . .
Die Syntax der ReDim-Anweisung besteht aus folgenden Teilen:
Teil Beschreibung
Preserve Optional. Schlüsselwort, das zum Erhalt der Daten in einem bestehenden Datenfeld verwendet wird, wenn die Größe der letzten Dimension geändert wird.
VarName Erforderlich. Name der Variablen gemäß den Standardkonventionen für Namen von Variablen.
Indizes Erforderlich. Dimensionen einer Datenfeldvariablen. Bis zu 60 Dimensionen sind zulässig. Die Syntax für das Argument Indizes ist:
[Untergrenze To] Obergrenze [,[Untergrenze To] Obergrenze] . . .
Wenn nicht explizit in Untergrenze angegeben, wird die Untergrenze eines Datenfeldes durch die Option Base-Anweisung gesteuert. Die Untergrenze ist Null, wenn keine Option Base-Anweisung vorhanden ist.
Typ Optional. Datentyp der Variablen. Zulässige Typen sind: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (zur Zeit nicht unterstützt), Date, String (für Zeichenfolgen variabler Länge), String * Länge (für Zeichenfolgen fester Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp. Verwenden Sie für jede deklarierte Variable einen separaten As Typ-Abschnitt. Bei Variant-Werten, die ein Datenfeld enthalten, beschreibt Typ den Typ der Elemente im Datenfeld, ändert den Variant-Wert aber nicht in einen anderen Typ.
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Dynamisches Array-Variable Größe-vgl. Vector/JAVA
05.09.2005 09:40:38
Martin
Danke für Deine sehr sehr schnelle Antwort,
also ich habe das jetzt mit Preserve ausprobiert:
ReDim Preserve Abschnitte(i, j)
ReDim Preserve Abschnitte(i, j) as integer
aber beides hat nicht funktioniert!!!
"INDEX auserhalb des gültigen Bereichs"
aber ich frage mich nur warum...
Jetzt mal kurz meine Vorgehensweise...
1. ReDim Abschnitte(1, 2) (1. Zeile, 2. Spalten)
2. for-Schleife
3. ReDim Preserve Abschnitte(2,2) (2. Zeilen, 2. Spalten)
usw...
-----
P.S. Die Anrede bezog sich nicht nur auf die Profis sondern auf die Qualität des Forums
ich wollte niemanden abwerten :-)
Anzeige
AW: Dynamisches Array-Variable Größe-vgl. Vector/JAVA
05.09.2005 09:51:11
Heiko
Hallo Martin,
Eine Array-Redimensionierung mit Preserve wird nur zugelassen, wenn sich ausschließlich die letzte Datenfelddimension ändert.
Wenn du dein Array also in mehreren Dimensionen vergrößern willst wird es schwierig.
Es gibt da ein par Tricks um das zu umgehen, aber dazu müßte man genauer wissen was du vorhast und wieviele Dimensionen du anstrebst.
Gruß Heiko

PS: Rückmeldung wäre nett !
AW: Dynamisches Array-Variable Größe-vgl. Vector/JAVA
05.09.2005 10:23:13
Martin
Also jetzt habe ich verstanden von was du redest?
was gehen würde ist:
Dim Array(0,1) as integer
(was einem Array mit 1. Zeile und 2. Spalten entspricht, das hatte ich nämlich vorhin auch falsch geschrieben denn ich bin eigentlich Java-Entwickler und da ist es etwas anderes aber egal...weiter im Text)
ReDim Preserve Array(0, 2)
(Das würde jetzt gehen weil sich die letzt Dimension ändert)
so jetzt aber zu meinem Problem:
Ich muss einen bestimmten Zahlenbereich in einer Spalte (z.B. Spalte A) in bestimmte Bereiche aufteilen und die Zeilen-Nr dieser Bereiche in ein Array speichern.
Zum Beispiel:
1 2099
2 3001
3 3001
4 3002
5 3005
So jetzt gibt es zwei Bereich
Bereich 1. 2099 - 3001
Bereich 2. 3002 - 3005
Die Zeilen-Nr. dieser Bereiche sollen jetzt in das Array gespeichet werden
also im Endeffekt

Bereich1:
Array(0,0) = 1
Array(0,1) = 3
Bereich2:
Array(1,0) = 4
Array(1,1) = 5
usw...
Und ich bräuchte jetzt eben eine Variables Zeilen Array mit immer 2.Spalten
Anzeige
Nachfrage
05.09.2005 12:38:18
Heiko
Hallo Martin,
kann es intern (also das Array selbst) auch 2 Zeilen und eine Variable Anzahl an Spalten haben ?! Kriegst du das verarbeitet ?
Um es dann im Tabellenblatt darzustellen ( is doch gewünscht oder ?!) könnte man die Worksheetfunction Transpose nutzen.
Gruß Heiko

PS: Rückmeldung wäre nett !
AW: Nachfrage
05.09.2005 12:56:40
Martin
Hallo Heiko,
also Deine Fragen verstehe ich nicht ganz aber ich werde mich mal so weit ich es verstanden habe dazu äußern.
Ich könnte natürlich die Relation des Arrays umdrehen und die Zeilen bzw. Spalten vertauschen. d.h. feste Zeilenanzahl und variable Spaltenanzahl.
Dann könnte ich nämlich auch die ReDim Preserve Funktion anwenden da sich dann die letzte Dimension des Arrays ändern würde und die auch nachträglich verändert werden kann!!!
Kurzes Beispiel:;
Array(i, j)
i = fester Wert
j = variabler Wert
Aber das ist dann wieder so eine "Ich hacke mich um den besten Weg" - Lösung.
Das Problem ist einfach wenn ich ein anderes mal wieder das gleiche Problem habe (Ein dyn. Array braucht man öfters) dann steh ich wieder auf dem Schlauch - ich hoffe du verstehst was ich meine -
Du wirst Dich vielleicht auch fragen warum ich überhaupt die ganzen Zeilen in ein Array weg schreibe; Kann ich Dir auch noch sagen:
Ich muss eine ganze Menge an Zeilen sortieren. Das soll nicht so funktionieren wie in Excel sondern es sollen bestimmte Bereiche sortiert werden.
z.B. die Zeilen 1 - 200 sind ein Bereich, die Zeilen 200 - 400 sind ein Bereich...
Naja ich glaube mit diesem paar Zeilen kann man das nicht so genau beschreiben...da bräuchte man schon länger aber das nur so nebenbei...
Im Grunde gehts mir nur darum wie mann schnell und einfach ein dyn Zeilen-Array machen kann
Anzeige
AW: Nachfrage
05.09.2005 14:46:19
Heiko
Hallo Martin,
da die VBA Hilfe dort ziemlich eindeutig ist, hier nochmal der Ausschnitt:
" Die Anzahl der Dimensionen kann nicht verändert werden. Mit dem Schlüsselwort Preserve können Sie nur die Größe der letzten Datenfelddimension ändern. Wenn das Datenfeld zum Beispiel nur eine Dimension hat, können Sie die Größe dieser Dimension ändern, weil es die letzte und einzige Dimension ist. Hat das Datenfeld jedoch mindestens zwei Dimensionen, so können Sie lediglich die Größe der letzten Dimension ändern, wenn der Inhalt des Datenfeldes erhalten bleiben soll. Das folgende Beispiel verdeutlicht, wie Sie die letzte Dimension eines dynamischen Datenfeldes vergrößern können, ohne bereits bestehende Daten im Datenfeld zu löschen. "
Wird dir wohl in VBA nichts anderes übrig bleiben als zu hacken (stricken, basteln ...).
Solltest du den Weg trotzdem gehen und du willst dann dieses Array im Sheet anzeigen lassen, kannst du es vor der Ausgabe mit Application.WorksheetFunction.Transpose(arrListe) transponieren ( also "drehen" ) und dann ausgeben.
Andere Ideen habe ich auch nicht.
Schau nochmal hier rein: https://www.herber.de/mailing/126700h.htm
Und wenn das nichts bringt und hier auch keine weiteren Antworten eingehen dann poste doch nochmal bei Online Excel:
http://www.online-excel.de/fom/fo_na.php?f=1
Da findest du vielleicht Rat, wenn es überhaupt möglich ist was du vorhast.
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Nachfrage
05.09.2005 14:51:27
Martin
Alles klar...Dann werde ich wohl oder übel wieder ums Problem hacken müssen :-)
Danke für Deine Hilfe Heiko...
MfG
AW: Nachfrage
05.09.2005 12:56:48
Martin
Hallo Heiko,
also Deine Fragen verstehe ich nicht ganz aber ich werde mich mal so weit ich es verstanden habe dazu äußern.
Ich könnte natürlich die Relation des Arrays umdrehen und die Zeilen bzw. Spalten vertauschen. d.h. feste Zeilenanzahl und variable Spaltenanzahl.
Dann könnte ich nämlich auch die ReDim Preserve Funktion anwenden da sich dann die letzte Dimension des Arrays ändern würde und die auch nachträglich verändert werden kann!!!
Kurzes Beispiel:;
Array(i, j)
i = fester Wert
j = variabler Wert
Aber das ist dann wieder so eine "Ich hacke mich um den besten Weg" - Lösung.
Das Problem ist einfach wenn ich ein anderes mal wieder das gleiche Problem habe (Ein dyn. Array braucht man öfters) dann steh ich wieder auf dem Schlauch - ich hoffe du verstehst was ich meine -
Du wirst Dich vielleicht auch fragen warum ich überhaupt die ganzen Zeilen in ein Array weg schreibe; Kann ich Dir auch noch sagen:
Ich muss eine ganze Menge an Zeilen sortieren. Das soll nicht so funktionieren wie in Excel sondern es sollen bestimmte Bereiche sortiert werden.
z.B. die Zeilen 1 - 200 sind ein Bereich, die Zeilen 200 - 400 sind ein Bereich...
Naja ich glaube mit diesem paar Zeilen kann man das nicht so genau beschreiben...da bräuchte man schon länger aber das nur so nebenbei...
Im Grunde gehts mir nur darum wie mann schnell und einfach ein dyn Zeilen-Array machen kann
Anzeige
AW: Nachfrage
05.09.2005 12:57:10
Martin
Hallo Heiko,
also Deine Fragen verstehe ich nicht ganz aber ich werde mich mal so weit ich es verstanden habe dazu äußern.
Ich könnte natürlich die Relation des Arrays umdrehen und die Zeilen bzw. Spalten vertauschen. d.h. feste Zeilenanzahl und variable Spaltenanzahl.
Dann könnte ich nämlich auch die ReDim Preserve Funktion anwenden da sich dann die letzte Dimension des Arrays ändern würde und die auch nachträglich verändert werden kann!!!
Kurzes Beispiel:;
Array(i, j)
i = fester Wert
j = variabler Wert
Aber das ist dann wieder so eine "Ich hacke mich um den besten Weg" - Lösung.
Das Problem ist einfach wenn ich ein anderes mal wieder das gleiche Problem habe (Ein dyn. Array braucht man öfters) dann steh ich wieder auf dem Schlauch - ich hoffe du verstehst was ich meine -
Du wirst Dich vielleicht auch fragen warum ich überhaupt die ganzen Zeilen in ein Array weg schreibe; Kann ich Dir auch noch sagen:
Ich muss eine ganze Menge an Zeilen sortieren. Das soll nicht so funktionieren wie in Excel sondern es sollen bestimmte Bereiche sortiert werden.
z.B. die Zeilen 1 - 200 sind ein Bereich, die Zeilen 200 - 400 sind ein Bereich...
Naja ich glaube mit diesem paar Zeilen kann man das nicht so genau beschreiben...da bräuchte man schon länger aber das nur so nebenbei...
Im Grunde gehts mir nur darum wie mann schnell und einfach ein dyn Zeilen-Array machen kann
Anzeige
AW: Nachfrage
05.09.2005 12:57:11
Martin
Hallo Heiko,
also Deine Fragen verstehe ich nicht ganz aber ich werde mich mal so weit ich es verstanden habe dazu äußern.
Ich könnte natürlich die Relation des Arrays umdrehen und die Zeilen bzw. Spalten vertauschen. d.h. feste Zeilenanzahl und variable Spaltenanzahl.
Dann könnte ich nämlich auch die ReDim Preserve Funktion anwenden da sich dann die letzte Dimension des Arrays ändern würde und die auch nachträglich verändert werden kann!!!
Kurzes Beispiel:;
Array(i, j)
i = fester Wert
j = variabler Wert
Aber das ist dann wieder so eine "Ich hacke mich um den besten Weg" - Lösung.
Das Problem ist einfach wenn ich ein anderes mal wieder das gleiche Problem habe (Ein dyn. Array braucht man öfters) dann steh ich wieder auf dem Schlauch - ich hoffe du verstehst was ich meine -
Du wirst Dich vielleicht auch fragen warum ich überhaupt die ganzen Zeilen in ein Array weg schreibe; Kann ich Dir auch noch sagen:
Ich muss eine ganze Menge an Zeilen sortieren. Das soll nicht so funktionieren wie in Excel sondern es sollen bestimmte Bereiche sortiert werden.
z.B. die Zeilen 1 - 200 sind ein Bereich, die Zeilen 200 - 400 sind ein Bereich...
Naja ich glaube mit diesem paar Zeilen kann man das nicht so genau beschreiben...da bräuchte man schon länger aber das nur so nebenbei...
Im Grunde gehts mir nur darum wie mann schnell und einfach ein dyn Zeilen-Array machen kann
Anzeige
AW: Nachfrage
05.09.2005 12:57:12
Martin
Hallo Heiko,
also Deine Fragen verstehe ich nicht ganz aber ich werde mich mal so weit ich es verstanden habe dazu äußern.
Ich könnte natürlich die Relation des Arrays umdrehen und die Zeilen bzw. Spalten vertauschen. d.h. feste Zeilenanzahl und variable Spaltenanzahl.
Dann könnte ich nämlich auch die ReDim Preserve Funktion anwenden da sich dann die letzte Dimension des Arrays ändern würde und die auch nachträglich verändert werden kann!!!
Kurzes Beispiel:;
Array(i, j)
i = fester Wert
j = variabler Wert
Aber das ist dann wieder so eine "Ich hacke mich um den besten Weg" - Lösung.
Das Problem ist einfach wenn ich ein anderes mal wieder das gleiche Problem habe (Ein dyn. Array braucht man öfters) dann steh ich wieder auf dem Schlauch - ich hoffe du verstehst was ich meine -
Du wirst Dich vielleicht auch fragen warum ich überhaupt die ganzen Zeilen in ein Array weg schreibe; Kann ich Dir auch noch sagen:
Ich muss eine ganze Menge an Zeilen sortieren. Das soll nicht so funktionieren wie in Excel sondern es sollen bestimmte Bereiche sortiert werden.
z.B. die Zeilen 1 - 200 sind ein Bereich, die Zeilen 200 - 400 sind ein Bereich...
Naja ich glaube mit diesem paar Zeilen kann man das nicht so genau beschreiben...da bräuchte man schon länger aber das nur so nebenbei...
Im Grunde gehts mir nur darum wie mann schnell und einfach ein dyn Zeilen-Array machen kann
Anzeige
AW: Nachfrage
05.09.2005 12:57:12
Martin
Hallo Heiko,
also Deine Fragen verstehe ich nicht ganz aber ich werde mich mal so weit ich es verstanden habe dazu äußern.
Ich könnte natürlich die Relation des Arrays umdrehen und die Zeilen bzw. Spalten vertauschen. d.h. feste Zeilenanzahl und variable Spaltenanzahl.
Dann könnte ich nämlich auch die ReDim Preserve Funktion anwenden da sich dann die letzte Dimension des Arrays ändern würde und die auch nachträglich verändert werden kann!!!
Kurzes Beispiel:;
Array(i, j)
i = fester Wert
j = variabler Wert
Aber das ist dann wieder so eine "Ich hacke mich um den besten Weg" - Lösung.
Das Problem ist einfach wenn ich ein anderes mal wieder das gleiche Problem habe (Ein dyn. Array braucht man öfters) dann steh ich wieder auf dem Schlauch - ich hoffe du verstehst was ich meine -
Du wirst Dich vielleicht auch fragen warum ich überhaupt die ganzen Zeilen in ein Array weg schreibe; Kann ich Dir auch noch sagen:
Ich muss eine ganze Menge an Zeilen sortieren. Das soll nicht so funktionieren wie in Excel sondern es sollen bestimmte Bereiche sortiert werden.
z.B. die Zeilen 1 - 200 sind ein Bereich, die Zeilen 200 - 400 sind ein Bereich...
Naja ich glaube mit diesem paar Zeilen kann man das nicht so genau beschreiben...da bräuchte man schon länger aber das nur so nebenbei...
Im Grunde gehts mir nur darum wie mann schnell und einfach ein dyn Zeilen-Array machen kann
AW: Nachfrage
05.09.2005 12:57:16
Martin
Hallo Heiko,
also Deine Fragen verstehe ich nicht ganz aber ich werde mich mal so weit ich es verstanden habe dazu äußern.
Ich könnte natürlich die Relation des Arrays umdrehen und die Zeilen bzw. Spalten vertauschen. d.h. feste Zeilenanzahl und variable Spaltenanzahl.
Dann könnte ich nämlich auch die ReDim Preserve Funktion anwenden da sich dann die letzte Dimension des Arrays ändern würde und die auch nachträglich verändert werden kann!!!
Kurzes Beispiel:;
Array(i, j)
i = fester Wert
j = variabler Wert
Aber das ist dann wieder so eine "Ich hacke mich um den besten Weg" - Lösung.
Das Problem ist einfach wenn ich ein anderes mal wieder das gleiche Problem habe (Ein dyn. Array braucht man öfters) dann steh ich wieder auf dem Schlauch - ich hoffe du verstehst was ich meine -
Du wirst Dich vielleicht auch fragen warum ich überhaupt die ganzen Zeilen in ein Array weg schreibe; Kann ich Dir auch noch sagen:
Ich muss eine ganze Menge an Zeilen sortieren. Das soll nicht so funktionieren wie in Excel sondern es sollen bestimmte Bereiche sortiert werden.
z.B. die Zeilen 1 - 200 sind ein Bereich, die Zeilen 200 - 400 sind ein Bereich...
Naja ich glaube mit diesem paar Zeilen kann man das nicht so genau beschreiben...da bräuchte man schon länger aber das nur so nebenbei...
Im Grunde gehts mir nur darum wie mann schnell und einfach ein dyn Zeilen-Array machen kann
AW: Nachfrage
05.09.2005 13:00:02
Martin
Entschuldigung - Da hat jetzt mein Browser einen kleinen Fehler gemacht!!!
Das war keine Absicht mit den vielen Antworten

AW: Nachfrage
05.09.2005 13:03:07
Dr.
Was schreist Du denn so? ^^
AW: Nachfrage
05.09.2005 13:31:02
Martin
Naja weil ich irgendwie, ohne Absicht, so oft die selbe Antwort gepostet habe...
Das passiert mir normalerweise nicht...

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige