Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Array vergrößern

Array vergrößern
30.04.2008 14:18:00
Petra
Schönen Tag allerseits!
Mein Problem: wie kann ich während der Laufzeit eines Makros bei einem 2 dim. Array die 2. Dimension erhöhen?
Ich lese über eine Schleife Werte ein, gleichgelagerte Werte erfasse ich in einem Array und verarbeite das Array weiter. Ich kann jedoch im vorhinein nicht feststellen, wieviel gleichgelagerte Werte jeweils vorhanden sind. Jetzt möchte ich, das die voreingestellte Dimension "myArr(11,100)" vergrößert wird z.B. "myArr(11,100 + x)".
Kann man so etwas irgendwie realisieren?
Liebe Grüße
Petra

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array vergrößern
30.04.2008 14:27:00
Renee
Hi Petra,

ReDim Preserve myArr(11,100+x) 


GreetZ Renée

AW: Array vergrößern
30.04.2008 14:39:51
Petra
Hi Renee
klappt nicht so ganz!
ich hab das Array so dimensioniert
Dim arrM(-1 To 11, 0 To 110) As Long
jetzt kann es passieren, dass mir die 110 nicht reichen! Bei Deinem Tipp kommt die Meldung:Datenfeld bereits dimensioniert.
Oder andere Frage, könnte ich im Vorfeld schon irgendwie ermitteln, welchen Wert ich brauche?
Grüße Petra

Anzeige
AW: Array vergrößern
30.04.2008 15:01:00
Rudi
Hallo,
du musst erst ein leeres Array dimensionieren, dann auf die Ursprungsgröße bringen und kannst es dann anpassen.

Sub tt()
dim myArr()
Redim myArr(-1 to 11, 0 to 110)
'code
Redim Preserve myArr(-1 to 11, 0 to 110+x)
End Sub


Gruß
Rudi

Anzeige
AW: Array vergrößern
30.04.2008 15:18:00
Petra
Hallo Rudi
Dein Tipp war goldwert!! Vielen Dank für Deine Unterstützung!
Und noch einen schönen Vatertag!
Liebe Grüße Petra

AW: Array vergrößern
30.04.2008 15:01:37
Renee
Hi Petra,
der andere Frage, könnte ich im Vorfeld schon irgendwie ermitteln, welchen Wert ich brauche?
für Fragen solcher Art, wende dich bitte an diese hier, denn
woher soll ich wissen, was du bis jetzt in deinem Code machst ?
Deine jetzigen Angaben stimmen auch nicht mit der Originalabfrage überein.
Warum nicht von Anfang an sich klar und deutlich ausdrücken ?

Sub til()
Dim arrM() As Long
Dim x As Integer
ReDim arrM(-1 To 11, 0 To 110)
MsgBox "tralalla, ich bin in der 2ten Dimension" & vbCrLf & _
"sooo gross:" & UBound(arrM, 2)
x = 10
ReDim Preserve arrM(-1 To 11, 0 To 110 + x)
MsgBox "tirrili, ich bin in der 2ten Dimension" & vbCrLf & _
"sooo gross:" & UBound(arrM, 2)
End Sub


GreetZ Renée

Anzeige
AW: Array vergrößern
30.04.2008 15:23:00
Petra
Hallo Renee
auch Dein Tipp war gut, wie auch alle Deine Antworten.
Aber vielleicht könntest Du Dir mal dies vor Augen halten:
Du bist ohne Zweifel ein fachliches ASS,
a b e r
Dein Ton klingt oftmals nicht gerade nach Beethoven oder Mozart!
Es soll vorkommen, dass auf der anderen Seite Hilfe- und Ratsuchende sitzen und eigentlich nichts anderes wollen, als das man ihnen "unter die Arme greift".
Schönen Feiertag noch,
Grüße Petra

Anzeige
AW: Array vergrößern
30.04.2008 15:36:00
Rudi
Hallo Petra,
es soll aber auch vorkommen, dass auf der anderen Seite Hilfe- und Ratgebende sitzen, die eigentlich nichts anderes wollen, als anderen unter die Arme zu greifen.
Was wir nicht wollen, ist Hilfe- und Ratsuchenden die Würmer aus der Nase zu ziehen. Daher der manchmal etwas ruppig 'klingende' Ton.
Gruß
Rudi

Anzeige
Ce le ton, qui fait la musique ?...
30.04.2008 17:26:41
Renee
Wolfgang Amadeus Mozart (1756-1791) "... und einen dreck vielleicht scheisse ich."
Ludwig van Beethoven (1770-1827) "Ich habe niemals daran gedacht, für den Ruf und die Ehre zu schreiben: Was ich auf dem Herzen habe, muß heraus, und darum schreibe ich."
Renée

Anzeige
AW: Ce le ton, qui fait la musique ?...
30.04.2008 22:43:00
Petra
Guten Abend Renee
Hut ab, Du hast ja noch ganz unbekannte Talente! Auf welchen Gebieten bist Du noch so gut drauf?
Schönen Feiertag noch und ein langes, schönes Wochendende
wünscht Petra
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Array in VBA dynamisch erweitern


Schritt-für-Schritt-Anleitung

Um ein VBA-Array während der Laufzeit dynamisch zu erweitern, kannst du die ReDim Preserve-Anweisung verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung, die dir zeigt, wie du ein 2-dimensionales Array in VBA erweitern kannst:

  1. Array Deklaration: Zuerst musst du ein leeres Array deklarieren.

    Dim myArr() As Long
  2. Erste Dimensionierung: Dimensioniere das Array auf die ursprüngliche Größe.

    ReDim myArr(-1 To 11, 0 To 110)
  3. Werte hinzufügen: Füge Werte in dein Array ein, während du in einer Schleife arbeitest.

  4. Array dynamisch erweitern: Wenn du weißt, dass die zweite Dimension des Arrays nicht ausreicht, kannst du das Array wie folgt erweitern:

    Dim x As Integer
    x = 10 ' Beispielwert für die Erweiterung
    ReDim Preserve myArr(-1 To 11, 0 To 110 + x)

Häufige Fehler und Lösungen

Hier sind einige häufige Fehler, die beim Arbeiten mit dynamischen Arrays in VBA auftreten können, und deren Lösungen:

  • Fehler: Datenfeld bereits dimensioniert
    Lösung: Stelle sicher, dass du das Array zuerst ohne Dimensionen deklarierst und dann mit ReDim dimensionierst, bevor du es mit ReDim Preserve erweiterst.

  • Fehler: Index außerhalb des gültigen Bereichs
    Lösung: Überprüfe die Indizes deines Arrays, um sicherzustellen, dass du innerhalb der definierten Grenzen arbeitest.


Alternative Methoden

Wenn du mit dynamischen Arrays arbeitest, gibt es auch alternative Methoden, um sie zu erweitern:

  • Verwendung von Collections: Anstelle von Arrays kannst du auch die Collection-Klasse verwenden, die eine dynamische Speicherverwaltung bietet.

    Dim myCollection As Collection
    Set myCollection = New Collection
    myCollection.Add "Wert1"
    myCollection.Add "Wert2"
  • Verwendung von Dictionaries: Wenn du Schlüssel-Wert-Paare benötigst, kannst du ein Dictionary verwenden, um deine Daten dynamisch zu speichern und zu verwalten.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du ein dynamisches Array in VBA füllen und erweitern kannst:

Sub Beispiel()
    Dim myArr() As Long
    Dim i As Integer
    Dim x As Integer

    ' Dynamisches Array initialisieren
    ReDim myArr(-1 To 11, 0 To 110)

    ' Werte einfügen
    For i = 0 To 10
        myArr(i, 0) = i * 10
    Next i

    ' Dynamische Erweiterung des Arrays
    x = 20
    ReDim Preserve myArr(-1 To 11, 0 To 110 + x)

    ' Werte nach der Erweiterung hinzufügen
    For i = 111 To 110 + x
        myArr(0, i) = i * 10
    Next i
End Sub

Tipps für Profis

  • Vorbereitung der Array-Größe: Wenn möglich, versuche die maximale Größe deines Arrays im Voraus zu planen, um unnötige ReDim-Operationen zu vermeiden.

  • Verwendung von UBound und LBound: Nutze UBound und LBound, um die Grenzen deines Arrays zu prüfen, bevor du Werte hinzufügst oder das Array erweiterst.

  • Optimierung der Performance: Reduziere die Anzahl der ReDim Preserve-Befehle, da sie die Performance beeinträchtigen können. Es ist effizienter, die Größe des Arrays einmalig auf die maximale Größe zu setzen und es dann gezielt zu füllen.


FAQ: Häufige Fragen

1. Wie kann ich ein leeres Array in VBA erstellen?
Du kannst ein leeres Array einfach mit Dim myArr() As Long deklarieren, ohne es sofort zu dimensionieren.

2. Kann ich ein mehrdimensionales Array dynamisch erweitern?
Ja, du kannst mehrdimensionale Arrays mit ReDim Preserve erweitern, solange du die Dimensionen korrekt angibst.

3. Was passiert, wenn ich ReDim Preserve ohne Dimensionierung benutze?
Wenn du versuchst, ein bereits dimensioniertes Array mit ReDim Preserve zu ändern, erhältst du einen Fehler. Stelle sicher, dass das Array zuvor mit ReDim dimensioniert wurde.

4. Wie kann ich die Größe eines Arrays im Voraus bestimmen?
Es gibt keine eingebaute Methode, um die endgültige Größe eines dynamischen Arrays im Voraus zu bestimmen, aber du kannst Logik verwenden, um zu schätzen, wie viele Elemente du hinzufügen möchtest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige