Anzeige
Archiv - Navigation
1424to1428
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array-Größe während der Laufzeit ändern

Array-Größe während der Laufzeit ändern
07.05.2015 21:57:50
SteffenS
Hallo Zusammen,
ich definiere in einem Makro ein Array. Da ich nicht weiß wie groß das Array werden kann, möchte ich dieses während der Laufzeit gern anpassen:
Sub test()
ReDim aMaps(1, 1) As Variant
last_cell = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To last_cell
ReDim Preserve aMaps(i - 2, 1)
aMaps(i - 2, 1) = Cells(i, 1).Value
aMaps(i - 2, 2) = Cells(i, 2).Value
Next i
End Sub
Leider funktioniert dies nicht. Es erscheint der Fehler: Index außerhalb des gültigen Bereichs.
Da ich mit Arrays bisher nicht gearbeitet habe bräuchte ich hier mal Eure Hilfe.
Danke Euch schon mal.
VG Steffen Schmerler

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array-Größe während der Laufzeit ändern
07.05.2015 22:18:29
Nepumuk
Hallo,
mit Preserve kannst du nur die letzte Dimension eines Arrays ändern. Also kippe das Array.
Gruß
Nepumuk

Man kann das aber auch wie folgt machen, ...
08.05.2015 00:36:56
Luc:-?
…Steffen,
da sich die Array-Größe hptsächlich an der ZeilenAnzahl bei ganzen 2 Spalten orientiert:
Rem Anlegen eines VertikalVektors mit Elementen aus HorizontalVektoren
'   (Variant m.Arrays -> Arrays in Array) m.3 ErgebnisAusgabeVarianten
Sub test()
Const allErgBer$ = "I2:J4 K2:L4 M2:N4"  'nur f.Test; ggf anpassen!
Dim i As Long, last_cell As Long, adErgBer$(), aMaps As Variant
last_cell = Cells(Rows.Count, 1).End(xlUp).Row
ReDim aMaps(1 To last_cell - 1): adErgBer = Split(allErgBer)
For i = 2 To last_cell
aMaps(i - 1) = Array(Cells(i, 1), Cells(i, 2))
Next i
Rem Ausgabe Var1
Range(adErgBer(0)) = WorksheetFunction.Index(aMaps, 0, 0)
Rem Ausgabe Var2
With WorksheetFunction
Range(adErgBer(1)) = .Transpose(.Transpose(aMaps))
End With
Rem Ausgabe Var3
For i = 1 To UBound(aMaps)
Range(adErgBer(2)).Rows(i) = aMaps(i)
Next i
End Sub
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Man kann das aber auch wie folgt machen, ...
08.05.2015 07:58:32
SteffenS
Hallo,
danke für die Antworten. Ich habe es jetzt so gelöst:
ReDim aMaps(2 To last_cell, 2) As Variant
aMaps(i, 1) = Cells(i, 1).Value
aMaps(i, 2) = Cells(i, 2).Value
Damit klappt es.
@Nepumuk
Deine Antwort habe ich leider nicht ganz verstanden.
Was meinst Du damit, dass es mit 'ReDim Preserve aMaps(i, 1) As Variant nicht funktioniert?
Da ich mich mit Arrays noch nicht weiter beschäftigt habe, muss ich nochmal nachfragen.
VG Steffen

AW: Array-Größe während der Laufzeit ändern
08.05.2015 08:31:25
Beverly
Hi Steffen,
Sub test()
ReDim aMaps(1, 1) As Variant
last_cell = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To last_cell
ReDim Preserve aMaps(1, i - 2)
aMaps(0, i - 2) = Cells(i, 1).Value
aMaps(1, i - 2) = Cells(i, 2).Value
Next i
End Sub
Nur das letzte Feld lässt sich dynamisch erweitern.


Anzeige
in dem Fall kannst du einfach ....
08.05.2015 09:11:14
Rudi
Hallo,
so verfahren:
Sub test()
Dim aMaps As Variant, LastCell As Long
LastCell = Cells(Rows.Count, 1).End(xlUp).Row
aMaps = Range(Cells(2, 1), Cells(LastCell, 2))
End Sub
Gruß
Rudi

AW: in dem Fall kannst du einfach ....
08.05.2015 12:31:40
SteffenS
Danke Euch nochmal.
VG Steffen
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige