Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mehrdimensionale nicht gleichmäßige Arrays dynamisch erweitern
#1
Wink 
Ha((o an alle Profis.

Ich habe eine echt knifflige Aufgabe.
Ich erstelle ein zweidimensionales Array. Aber die Anzahl der Elemente im Array variiert. Bsp. wie es aussieht:

Code:
Dim testarray

testarray = Array(Array(1, 2, 3), Array(4, 5), Array(6, 7, 8, 9))

Das ist soweit wunderbar. Ich habe nur die Anzahl der 2. Arraylevels, die ich auch benötige. Jetzt möchte ich ein neues 2. Arraylevel hinzufügen und die alten Werte müssen stehen bleiben. Bsp.: Array(10,11,12,13,14).

Hat jemand eine Idee, wie ich es anstellen kann, ohne daß ich keine unnötigen Variablen oder Arrayelemente dimensionieren muss?

Einen halben Ansatz hätte ich mit:
Code:
Sub test()

Dim testarray
Dim test1
Dim test2
Dim test3
Dim test4

test1 = Array(1, 2, 3)
test2 = Array(4, 5)
test3 = Array(6, 7, 8, 9)
test4 = Array(10, 11, 12, 13, 14)

testarray = Array(test1, test2, test3, test4)

End Sub

Aber hier muss ich vorher genau wissen wieviel 2.Arraylevel es genau geben wird. Das weiß ich aber nicht.

Würde mich über eine smarte tolle Lösung freuen.

Nyn007
Nyn007
Antworten Top
#2
Hallo,

ich wüsste nicht, wann ich mal ein Array mit mehr als zwei Dimensionen gebraucht hätte. Am besten beschreibst du mal, was du machen willst, ich fürchte du bist da irgendwie auf dem Holzweg.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
Moin!
@Klaus-Dieter:
Der Code des TE erzeugt ein 2-dimensionales Array!

@Nyn:
Ich habe Dich auch nicht richtig verstanden!
Folgendes meinst Du wohl nicht?
Code:
Sub x()
Dim testarray

testarray = Array(Array(1, 2, 3), Array(4, 5), Array(6, 7, 8, 9))
testarray = Array(testarray, Array(10, 11, 12, 13, 14))
End Sub

Ergibt folgende Array-Inhalte:
   

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
Hallo,

Wenn ich Dich richtig verstehe, willst Du wahrscheinlich so etwas machen wie ich bei Pfreq:
http://sulprobil.com/Get_it_done/IT/Exce...pfreq.html

Viele Grüße,
Bernd P
Antworten Top
#5
Ja. Die Erklärung ist nicht einfach. Ich versuche es nochmal. Am besten anhand von erwarteten Ergebnissen.
[
Bild bitte so als Datei hochladen: Klick mich!
]

D.h. das hinzugefügte Array wird auf die gleiche Ebene gesetzt, wie die Arrays der 2.Ebene davor.
Besser ???
Nyn007
Antworten Top
#6
Hallo,

meinst Du so?
Sub test()

Dim testarray
Dim test1
Dim test2
Dim test3
Dim test4

test1 = Array(1, 2, 3)
test2 = Array(4, 5)
test3 = Array(6, 7, 8, 9)
test4 = Array(10, 11, 12, 13, 14)

testarray = Array(test1, test2, test3)
ReDim Preserve testarray(3)
testarray(3) = test4
End Sub
Gruß Uwe
Antworten Top
#7
Hallo,

ich mische zwar nur ungern ein, aber eventuell meinst du es so ... und es wird dabei nur ein 1-dimensionales Array erzeugt.
Siehe den Fehler in der letzten Codezeile.

PHP-Code:
Sub test()

Dim testarray As Variant
Dim ar 
As Long

ReDim test
(1 To 3)

test(1) = Array(123)
test(2) = Array(45)
test(3) = Array(6789)

ar UBound(test) + 1

ReDim Preserve test
(1 To ar)
test(ar) = Array(1011121314)

testarray test()

MsgBox UBound(testarray1)
MsgBox UBound(testarray2
End Sub 
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top
#8
Wink 
Genau das. Perfekt.
Danke Euch.
Nyn007
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste