Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1624to1628
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

Leeres Array anlegen

Leeres Array anlegen
16.05.2018 08:40:34
Lutz
Hallo,
ich benötige ein leeres Array, das die gleiche Größe wie ein zuvor befülltes Array hat.
Mit diesem Code lösche ich das Array ja vollig:
Sub Makro1()
' 1. Array mit den Daten befüllen '
Dim TMPDAT As Variant
Dim TMPZMAX As Long
Dim TMPSMAX As Long
TMPSMAX = 20
tbl91.Activate
Range("A1").End(xlDown).Activate
TMPZMAX = ActiveCell.Row
Application.Goto Reference:=Range("A1"), Scroll:=True
With tbl91
TMPDAT = .Range(.Cells(1, 1), .Cells(TMPZMAX, TMPSMAX))
End With
' 2. Array erstellen in gleicher Größe wie 1. Array '
Dim VARDAT As Variant
With tbl91
VARDAT = .Range(.Cells(1, 1), .Cells(TMPZMAX, TMPSMAX))
End With
Erase VARDAT
End Sub
Wie muß ich das machen?
Danke und Gruß vom Lutz

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

Betreff
Datum
Anwender
Anzeige
AW: Leeres Array anlegen
16.05.2018 08:54:29
ChrisL
Hi Lutz
Ein Beispiel:
Sub t()
Dim arrDummy1() As Variant
Dim arrDummy2() As Variant
arrDummy1 = Range("A1:B3")
ReDim arrDummy2(LBound(arrDummy1), UBound(arrDummy1))
arrDummy2 = arrDummy1
Range("D1:E3") = arrDummy2
End Sub
cu
Chris
AW: Leeres Array anlegen
16.05.2018 08:55:51
Peter(silie)
Hallo,
ReDim VARDAT(LBound(TMPDAT) To UBound(TMPDAT))

https://docs.microsoft.com/de-de/dotnet/visual-basic/language-reference/statements/redim-statement
AW: Leeres Array anlegen
16.05.2018 09:25:45
Lutz
Wenn ich das jetzt mit diesem Code teste:
Sub Makro1()
' 1. Array mit den Daten befüllen '
Dim TMPDAT As Variant
Dim TMPZMAX As Long
Dim TMPSMAX As Long
TMPSMAX = 20
tbl91.Activate
Range("A1").End(xlDown).Activate
TMPZMAX = ActiveCell.Row
Application.Goto Reference:=Range("A1"), Scroll:=True
With tbl91
TMPDAT = .Range(.Cells(1, 1), .Cells(TMPZMAX, TMPSMAX))
End With
' 2. Array erstellen in gleicher Größe wie 1. Array '
ReDim VARDAT(LBound(TMPDAT) To UBound(TMPDAT))
' Testdaten in 2. Array einfügen '
VARDAT(2, 1) = "test"
' Testdaten in Tabelle ausgeben '
For i = 2 To TMPZMAX Step 1
For y = 1 To 8 Step 1
tbl0.Cells(i, y).Value = VARDAT(i, y)
Next y
Next i
End Sub
Dann erhalte ich eine Fehlermeldung.
Was mache ich falsch?
Anzeige
AW: Leeres Array anlegen
16.05.2018 10:35:49
Daniel
HI
da das ausgangsarray 2-dimendional ist, musst du auch beide Dimensionen angeben:
x = Range(...).Value
redim y(Lbound(x, 1) to Ubound(x, 1), Lbound(x, 2) to Ubound(x, 2))
wenn das Ausgangsarray direkt aus einem Zellbereich erzeugt wird, ist der LBound-Wert 1.
dann kann man etwas verkürzen
x = Range(...).Value
redim y(1 to UBound(x, 1), 1 to UBound(x, 2))
Gruß Daniel
Beim Lesen deiner Posts erhalte ich FehLmeldung...
16.05.2018 10:37:05
EtoPHG

Einfach chunken
16.05.2018 23:06:17
lupo1
brr = [HA1:HZ65000]
Begründung: Das (nicht genannte) vorher befüllte Array arr gibt die Dimensionen rechtzeitig vor. Somit kann man den überschießenden Rest einfach missachten.
Mit UBound(arr(1)) (u. entspr. für j) kann man nun i ermitteln.
Range(Cells(1, 1), Cells(i, j)) = brr
empfängt nun nur die über i/j zutreffende Arraygröße zurück.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige