Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

VBA eindimensionales Array mit Daten als Array

Forumthread: VBA eindimensionales Array mit Daten als Array

VBA eindimensionales Array mit Daten als Array
28.02.2025 18:41:33
Joschi Witchcraft
Hallo Forum

Um die Untererzeichnisse auszuwerten, hatte ich bisher eine Routine mit "Collection" im Einsatz. Doch bei dieser Technik gibt es ein Limit von 256.

Nun versuche ich gerade, eine Lösung mit einer Array-Variablen zu erstellen. Mein Problem dabei: ich kann nur eine eindimensionale Struktur verwenden, da ich die Zahl der maximalen Einträge erst ermitteln muss.

Dann hatte ich eine Idee, und im ersten Schritt funktioniert die auch:

Option Explicit
Sub Versuch1()
Dim AVar As Variant
Dim T As Integer
ReDim AVar(0 To 0)
For T = 1 To 9
ReDim Preserve AVar(1 To UBound(AVar) + 1)
AVar(UBound(AVar)) = Array(T * 1, T * 3, T * 7)
Next T
Stop
End Sub

Soweit, so gut.
Mein Problem: wie kann ich die Daten wieder trennen?

Die In Array() verwendeten Werte sind nur zur Demo,

Wer kann helfen?

Gruß Joschi

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA eindimensionales Array mit Daten als Array
28.02.2025 18:51:21
Onur
Nimm DICTIONARY statt Collection.
Ist ziemlich Ähnlich, Aber kein solches Limit.
AW: VBA eindimensionales Array mit Daten als Array
28.02.2025 19:04:17
emkaes
Hallo,

deine Aufgabenbeschreibung ist etwas kryptisch. Falls ich dich richtig verstanden habe, solltest du ein 2dim Array benutzen. Die erste Dimension nimmt dann deine 3 Werte auf und in die 2.te Dimension nimmst du die Anzahl der Daten


dim arr() as variant
dim z as long
z = 1

For i = 1 to …..
Redim preserve arr(1 to 3, 1 to z)
Arr(1,i)=t*1
Arr(2,i)=t*3
Arr(3,i)=t*7
z=z+1

Next
……


Und zum Auslesen kannst du über Application.transpose das Array wieder in eine „richtige“ Form bringen




Anzeige
AW: VBA eindimensionales Array mit Daten als Array
28.02.2025 20:14:12
Joschi Witchcraft
Hallo emkaes.

Dass man eine Array nur in der letzten Stufe erweitern kann, ist mir bekannt. Ich finde, das macht eine Struktur nicht sehr übersichtlich.

Gruß Joschi
AW: VBA eindimensionales Array mit Daten als Array
28.02.2025 19:54:06
Daniel
Hi
Was meinst du genau mit "Daten wieder trennen"?


Gruß Daniel
AW: VBA eindimensionales Array mit Daten als Array
28.02.2025 20:54:34
Yal
Hallo Joschi,

im Prinzip mit Arr(i)(j), dabei ist i der Index der Haupt-Array und j der Index der Array in Arr(i).

Aber es scheint nicht erlaubt, in Array in Array zu redimensionieren:
Sub ArrayOfArray()

Dim i, j
Dim Arr

Arr = Array() 'Dummy-Init. UBound ist dann -1 und LBound = 0
ReDim Arr(2) ' 3 Elt von 0 bis 2
For i = 0 To 2
Arr(i) = Array()
ReDim Arr(i)(3)'GEHT NICHT!
For j = 0 To 3
Arr(i)(j) = j
Next
Next
End Sub


Man muss über eine Variable vom Typ Array, die dann Arr(i) übergeben wird:
Sub ArrayOfArray()

Dim i, j
Dim Arr
Dim Temp

Arr = Array() 'Dummy-Init. UBound ist dann -1 und LBound = 0
ReDim Arr(2) ' 3 Elt von 0 bis 2
'Populate
For i = 0 To 2
Arr(i) = Array()
Temp = Array()
ReDim Temp(3)
For j = 0 To 3
Temp(j) = j
Next
Arr(i) = Temp
Next
'Run through
For i = 0 To 2
For j = 0 To 3
Debug.Print i, Arr(i)(j)
Next
Next
End Sub
(bei einem Array von vorab bekannten Länge verwendet man nicht Redim, sondern direkt eine Initialisierung auf die richtige Größe)


Prinzipiell ist eine Verzeichnisstruktur ein Baum. Man geht rekursiv durch. Eine parallele Speicherung der Struktur in eine VBA-Baum ist kompliziert und selten sinnvoll.
Lieber einen Dictionary mit den Pfade als Schlüssel verwenden:
Dic ("root") = ...
Dic ("root\unterverz01") = ...
Dic ("root\unterverz01\unterverz0101") = ...
Dic ("root\unterverz02") = ...
Dic ("root\unterverz02\unterverz0201") = ...

VG
Yal
Anzeige
AW: VBA eindimensionales Array mit Daten als Array
28.02.2025 20:21:12
Joschi Witchcraft
Hallo Daniel.

Wenn ich mir im "Lokal"-Fenster die Struktur der gefüllten Variable AVar anschaue, dann ist alles so gefüllt, wie ich mir das vorgestellt hatte.

Userbild

Mein Problem: wie komme ich zum Beispiel an die 3 Werte, welche in AVar(5) gespeichert sind.

Gruß Joschi
Anzeige
AW: VBA eindimensionales Array mit Daten als Array
28.02.2025 20:31:37
Daniel
Hi

Auf die Einzelwerte kannst du so zugreifen:
AVar(5)(0)

Mit X = AVar(5)
Wird X zu einem eindimensionalen Array mit den drei Elementen.

Um sich das ganze besser Vorzustellen:
- ein Einzelwert entspricht einer Perle
- ein eindimensionalen Array ist eine Perlenkette
- einzwedimensionales Array ist ein Perlenteppich
- was du erstellt hast ist eine Perlenschnur, bei der anstelle einzelner Perlen weitere Perlrnschnüre verwendet werden.

Anzeige
AW: VBA eindimensionales Array mit Daten als Array
28.02.2025 20:37:21
Joschi Witchcraft
Hallo Daniel.

Danke. Das war die Lösung.

Gruß Joschi
AW: VBA eindimensionales Array mit Daten als Array
28.02.2025 20:11:12
Joschi Witchcraft
Hallo Onur.

Danke für Deine Antwort. Mit meinem "Basiswissen" möchte ich ungern eine weitere Technik einsetzen. Möglichwerweise komme ich aber darauf zurück, wenn ich keine andere Lösung finde.

Gruß Joschi
AW: VBA eindimensionales Array mit Daten als Array
28.02.2025 20:49:35
Onur
Dann poste mal deine Originaldatei (mit Collection) und ich baue sie um.

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige