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

Forumthread: Array Größe mit Variable

Array Größe mit Variable
07.04.2019 14:17:33
Sebastian
Hi ihr,
ich versuche gerade beim Erstellen von Arrays als Klassen (als Global im Modul)
"Global KFZbox(1) As FahrzeugBoxen"
mit variabler Größe zu bestimmen. Hier kann ich ja natürlich die Variable nicht berechnen, deshalb hab ich die Größe mit 1 und dann später im Code der UserForm direkt zu Beginn mit ReDim versucht. Dies funktioniert aber leider nicht, ich bekomme den Fehler Datenfeld bereits dimensioniert.
Hat mir hier jemand einen Rat? Gibt es eine Möglichkeit die Variable bereits vor dem Deklarieren zu bestimmen? Ich brauche das Klassenarray als Global, da ich es in verschiedenen Klassenmodulen verwende.
Grüße und vielen Dank im Vorfeld
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array Größe mit Variable
07.04.2019 14:24:53
Daniel
HI
wenn du die Größe eines Arrays im Verlauf des Makros mit Redim ändern willst, darfst du bei der Deklaration keine Größe angeben, sondern lässt diese einfach offen:
Global KFZbox() As FahrzeugBoxen
dann funktioniert das Redim.
Gruß Daniel
AW: Array Größe mit Variable
07.04.2019 17:34:18
Sebastian
Super, danke dir :)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Array-Größe in VBA


Schritt-für-Schritt-Anleitung

Um die Größe eines Arrays in VBA dynamisch zu gestalten, kannst du die folgenden Schritte befolgen:

  1. Deklaration des Arrays: Deklariere das Array ohne eine feste Größe. Das ermöglicht dir, die Größe später mit ReDim zu ändern.

    Global KFZbox() As FahrzeugBoxen
  2. Verwendung von ReDim: Wenn du die Größe des Arrays festlegen möchtest, verwende ReDim im Code. Hierbei kannst du die Größe während der Laufzeit bestimmen.

    ReDim KFZbox(1 To 10) ' Beispiel für eine Größe von 10
  3. Zugriff auf das Array: Du kannst nun auf die Elemente des Arrays zugreifen und sie nach Bedarf befüllen oder bearbeiten.

    KFZbox(1) = New FahrzeugBoxen
  4. Ändern der Größe: Wenn du später die Größe des Arrays anpassen möchtest, kannst du ReDim Preserve verwenden, um bestehende Daten zu behalten.

    ReDim Preserve KFZbox(1 To 20) ' Ändert die Größe auf 20 und behält die Daten

Häufige Fehler und Lösungen

  • Fehler: Datenfeld bereits dimensioniert: Dieser Fehler tritt auf, wenn du versuchst, ReDim auf ein Array anzuwenden, das bereits eine Größe hat. Stelle sicher, dass du das Array anfangs ohne Größe deklarierst.

  • Lösung: Stelle sicher, dass du die Deklaration wie folgt ausführst:

    Global KFZbox() As FahrzeugBoxen
  • Fehler: Zugriff auf nicht initialisiertes Array: Wenn du versuchst, auf ein Array zuzugreifen, das noch nicht mit ReDim initialisiert wurde, erhältst du einen Laufzeitfehler.

  • Lösung: Überprüfe, ob das Array mit IsEmpty initialisiert wurde, bevor du darauf zugreifst.


Alternative Methoden

Eine alternative Methode zur Handhabung variabler Array-Größen in VBA ist die Verwendung von Collections oder Dictionaries. Diese bieten eine flexible Möglichkeit, Elemente hinzuzufügen und die Größe dynamisch zu verwalten, ohne sich um die Größenbeschränkungen von Arrays kümmern zu müssen.

Dim KFZbox As Collection
Set KFZbox = New Collection

' Hinzufügen von Elementen
KFZbox.Add New FahrzeugBoxen

Praktische Beispiele

Wenn du eine Excel Top 10 Liste mit Bedingungen erstellen möchtest, kannst du VBA-Arrays nutzen, um die Daten effizient zu verwalten. Hier ist ein einfaches Beispiel:

Sub Top10Liste()
    Dim KFZbox() As FahrzeugBoxen
    ReDim KFZbox(1 To 10)

    ' Füge Beispiel-Fahrzeuge hinzu
    For i = 1 To 10
        Set KFZbox(i) = New FahrzeugBoxen
        KFZbox(i).Name = "Fahrzeug " & i
    Next i

    ' Ausgabe der Fahrzeuge
    For i = 1 To 10
        Debug.Print KFZbox(i).Name
    Next i
End Sub

Tipps für Profis

  • Verwendung von ReDim Preserve: Nutze ReDim Preserve, um die bestehenden Daten zu behalten, wenn du die Größe des Arrays änderst. Sei jedoch vorsichtig, da Preserve nur die letzte Dimension des Arrays beibehalten kann.

  • Optimierung der Performance: Wenn du oft die Größe eines Arrays ändern musst, überlege, ob eine Collection oder ein Dictionary besser geeignet ist, da sie eine höhere Flexibilität bieten.

  • Dokumentation: Halte deine Code-Kommentare klar, insbesondere bei der Verwendung von Arrays, um die Lesbarkeit und Wartbarkeit zu erhöhen.


FAQ: Häufige Fragen

1. Kann ich die Größe eines Arrays in einer Funktion ändern?
Ja, du kannst die Größe eines Arrays in einer Funktion ändern, solange das Array zuvor ohne Größe deklariert wurde.

2. Welche Vor- und Nachteile hat die Verwendung von Arrays in VBA?
Arrays sind schnell und effizient, wenn es um die Speicherung von Daten geht. Sie haben jedoch eine feste Struktur, die ihre Flexibilität im Vergleich zu Collections einschränkt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige