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

Array unbestimmter Länge befüllen

Forumthread: Array unbestimmter Länge befüllen

Array unbestimmter Länge befüllen
19.09.2017 14:56:30
hofi
Hallo Zusammen
ich hab schon viel nachgelesen, aber leider ncihts gefunden was mir auf mein wahrscheinlich leichtes Problem eine Antwort gibt.
In einer Schleife lasse ich eine Variable j hochzählen, solange bis die Vorraussetztung nicht mehr erfüllt ist. Anschließend möchte ich mein j in einem Array speichern. Das j wird dann auf Null gesetzt und durchläuft wieder die Schleife. Nach jedem Schleifenende erhlate ich ein bestimmtes j das ich in das selbe Array schreiben möchte, welches ich mir ganz zum Schluss ausgegebn lassen will.
Da ich nicht weis wie oft das j eine Schleife durchläuft, weis ich auch nicht wie groß mein Array sein muss.
Meine Idee ist warhscheinlich zu primitiv:
.
. (Schleife)
.
Datenfeld(x) = j
x = x + 1 (variable zum hochzählen um an die nächste Stele im Array zu kommen)
.
.
.
Danke vorab schonmal für eure Hilfe
Lg Hofi
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array unbestimmter Länge befüllen
19.09.2017 15:07:51
Peter(silie)
Hallo,
schnell und schmerzlos die Antwort:
	Schleifen anfang
'//Neu dimensionieren
ReDim Preserve array_(x)
'//zuweisen
array_(x) = j
'//index erhöhen
x = x +1
Schleifen ende

Da würde ich aber ...
19.09.2017 19:18:49
lupo1
... doch niemals das ReDim in die Schleife packen, sondern vorher maximal oder maximal wahrscheinlich Dim-men und am Ende einmal ReDim-men.
Anzeige
AW: Array unbestimmter Länge befüllen
19.09.2017 20:00:43
Uduuh
Hallo,
am besten per Dictionary.
dim objArr as Object
set objArr=createobject("scripting.dictionary")
...Schleife
objArr(x)=j
x=x+1
...Schleife
Datenfeld=objArr.Items
Gruß aus’m Pott
Udo

;
Anzeige

Infobox / Tutorial

Array unbestimmter Länge in Excel befüllen


Schritt-für-Schritt-Anleitung

Um ein Array unbestimmter Länge in Excel VBA zu befüllen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Erstelle ein leeres Array: Du kannst ein dynamisches Array in VBA erstellen, das sich während der Ausführung der Schleife anpassen kann.

    Dim array_() As Variant
    Dim x As Long
    x = 0
  2. Durchlaufe die Schleife: In deiner Schleife kannst du das Array mit Werten befüllen.

    Do While Bedingung
       ' Dein Code hier
       Dim j As Long
       ' j wird hier hochgezählt
    
       ' Array neu dimensionieren und Wert zuweisen
       ReDim Preserve array_(x)
       array_(x) = j
       x = x + 1
    Loop
  3. Gib das Array aus: Am Ende der Schleife kannst du das Array verwenden oder ausgeben.


Häufige Fehler und Lösungen

  • Fehler: "Array index out of bounds"

    • Lösung: Stelle sicher, dass du ReDim Preserve korrekt verwendest, um das Array vor dem Hinzufügen neuer Werte neu zu dimensionieren.
  • Fehler: Unzureichende Array-Größe

    • Lösung: Achte darauf, dass du ReDim Preserve nicht in jeder Schleifeniteration verwenden solltest, da dies die Leistung beeinträchtigen kann. Dimensioniere das Array, wenn möglich, vorher maximal.

Alternative Methoden

Eine alternative Methode, um ein Array unbestimmter Länge zu befüllen, ist die Verwendung eines Dictionaries. Hier ist ein einfaches Beispiel:

Dim objArr As Object
Set objArr = CreateObject("Scripting.Dictionary")
Dim x As Long
x = 0

Do While Bedingung
    ' Dein Code hier
    Dim j As Long
    ' j wird hier hochgezählt

    objArr(x) = j
    x = x + 1
Loop

' Um die Werte aus dem Dictionary als Array zu erhalten
Dim Datenfeld As Variant
Datenfeld = objArr.Items

Diese Methode ermöglicht dir eine flexiblere Handhabung der Daten.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du ein Array unbestimmter Länge befüllen kannst:

  1. Zahlen von 1 bis n speichern:

    Dim array_() As Long
    Dim x As Long
    x = 0
    Dim n As Long
    n = 10 ' Beispielwert
    
    For i = 1 To n
       ReDim Preserve array_(x)
       array_(x) = i
       x = x + 1
    Next i
  2. Bedingte Speicherung: Werte nur speichern, wenn sie gerade sind.

    Dim array_() As Long
    Dim x As Long
    x = 0
    
    For i = 1 To 20
       If i Mod 2 = 0 Then
           ReDim Preserve array_(x)
           array_(x) = i
           x = x + 1
       End If
    Next i

Tipps für Profis

  • Vermeide häufiges ReDim: Um die Leistung zu verbessern, dimensioniere das Array so weit wie möglich im Voraus oder verwende ein Dictionary, wie oben beschrieben.

  • Behalte die Übersicht: Nutze immer klare Variablennamen, um die Lesbarkeit deines Codes zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich die Größe des Arrays im Voraus bestimmen? Wenn du eine Schätzung für die Anzahl der Durchläufe hast, kannst du das Array mit einer maximalen Größe initialisieren und später die Größe anpassen.

2. Was ist der Unterschied zwischen einem Array und einem Dictionary? Ein Array hat eine feste oder dynamische Größe, während ein Dictionary eine flexible Sammlung von Schlüssel-Wert-Paaren ist, die einfach zu handhaben ist, wenn du nicht weißt, wie viele Elemente du speichern musst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige