verstehe nicht warum manche Aktionen in einem Array, das in einem Array ist, nicht gehen, andere schon?
Im folgenden Beispiel kann ich einen bestimmten Wert eines Arrays, das in einem anderen Array ist, ändern und auslesen.
Ein Arrays, das in einem anderen Array ist, kann ich aber nicht in Größe ändern oder neu redimsnionieren. Ebenso kann ich Arrays in zB Dictionaries nicht ändern. Da muss ich es erst auf eine neue Variable kopieren, dort die Anderung vornehmen und dann wieder zurückstellen.
Gibt es dafür eine Erklärung oder Regeln?
Sub NeuerTest()
Dim a, b, c
Dim Verzeichnis As New Dictionary
a = Array(1, 2, 3)
b = Array(30, 50, "RR")
c = Array(a, b)
Verzeichnis.Add "Apfel", c
'Das geht:
Debug.Print c(1)(2) 'druckt "RR" als Eintrag eines Arrass in einem Array
c(1)(2) = "TT" 'überschreibt Eintrag eines Arrass in einem Array,
Debug.Print c(1)(2) 'druckt "TT" was auch funktioniert
Debug.Print Verzeichnis("Apfel")(0)(1) 'druckt 2 als Eintrag eines Arrass in einem Array
'Folgende Zeile geht nicht:
' ReDim c(1)(31) 'Kann das nicht schreiben
Verzeichnis("Apfel")(0)(1) = 777 'array in array in dict geht nicht, lässt es aber ohne Meckern durchführen
Debug.Print Verzeichnis("Apfel")(0)(1) 'soll 777 drucken, tut es aber nicht
'Umständliche Hilfskonstruktion schaffen Abilfe
Dim Hilfsarray
ReDim Hilfsarray(31)
c(1) = Hilfsarray
Hilfsarray = Verzeichnis("Apfel")(0)
Hilfsarray(2) = 777
'Hier muss es noch umständlicher gehen.
Dim HilfsHilfsArray
Hilfsarray = Verzeichnis("Apfel") 'Erst array rauskopieren,
HilfsHilfsArray = Hilfsarray(1) 'dann von dem das innere Array rauskopieren
HilfsHilfsArray(1) = "Banane" 'Wert ändern
Hilfsarray(1) = HilfsHilfsArray 'Inneres Array in äußeres Array zurück kopieren
Verzeichnis("Apfel") = Hilfsarray 'Aüßeres Array in dict zurück kopieren
Debug.Print Verzeichnis("Apfel")(1)(1) 'druckt "Banane", funktioniert.
End Sub
lg flo