237 Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)

Hallo,

wenn ich einen Tabellenbereich in in ein eindimensioniertes Array arrX() einlese, dann wird das Array bei mir aber zweidimesional aufgebaut:

Dim arrX() As Variant
ReDim arrX(32)
arrX = Range("A1:A32")

Dann funktioniert z.B. der code mit "Join" nicht mehr, da dieser nur auf eindimensionale Array anwendbar ist.

Was mache ich falsch? Hat jemand eine Tipp?

Danke und Gruß A.

3 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
Bearbeitet von nighty

Hallo A.

Mit einer Schleife einlesen!

und

ReDim arrX(32) sind übrigens 33 Felder!
(0 to 31) = 32 Felder
(32) = 33 Felder
(31) = 32 Felder
(1 to 32) = 32 Felder
Offtopic
Vielleicht mal nützlich!

Grundeinstellung = Es ist immer die letzte Dimension die mit Redim Preserve nutzbar ist
So kannst du bei einem 2 dimensionalen Array die erste Dimension mit redim preserve nutzen!


+1 in der Function,vergrößert die dimension um 1
-1 in der Function,verkleinert die dimension um 1


Function ArrayRedim(Darr As Variant) As Variant
    Darr = Application.WorksheetFunction.Transpose(Darr)
    ReDim Preserve Darr(LBound(Darr) To UBound(Darr) + 1)
    ArrayRedim = Application.WorksheetFunction.Transpose(Darr)
End Function

Gruß Nighty

+1 Punkt
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Andreas,

noch zur Ergänzung:

Wenn du so ein Array einliest - auch wenn es nur eine Spalte ist -, wird automatisch eine zweite Dimension erzeugt.

Wenn du versuchst, z.B. mit

MsgBox arrX(1)

einen Wert auszugeben, wirst du einen Laufzeitfehler bekommen (Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs).

Gibst du den Wert aber mit

MsgBox arrX(1, 1)

aus, dann wird dir der erste Wert angezeigt.

Lies deshalb das Array mit einer Schleife ein, wie von Nighty vorgeschlagen.

Gruß

M.O.

0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo nighty und M.O.,

danke für euere Kommentare, wieder was gelernt! Aber ist schon komisch, dass bei Einlesen nur einer Spalte ein zweidimensionales array erzeugt wird. Zumindest weiß ich jetzt was zu tun ist. Super und DANKE!

Gruß A.
...