Array auf einmal in Tabellenblatt schreiben

Bild

Betrifft: Array auf einmal in Tabellenblatt schreiben
von: Bonduca01
Geschrieben am: 24.09.2015 11:47:12

Hallo liebes Forum,
ich versuche schon den ganzen Vormittag lang einen Array auf einmal in ein Tabellenblatt zu schreiben.
Mein Array ist folgendermaßen deklariert: Dim Array(500,4)as Variant.Mein Array füllt sich über eine Schleife, beginnend bei array(3,4). Die Werte werden nicht direkt aus einem Tabellenblatt gelesen, sondern in einem Makro berechnet


For i=3 to 500
Array(i,4) = irgendetwas
Next i

Jetzt möchte ich den Array in ein neues Tabellenblatt auf einmal ausgeben lassen (mit einer Schleife dauert es ziemlich lange, da mein Array groß ist).
Hab schon folgendes versucht:

Dim Array (500,4) as Variant
Range("A1:B26600") = Array
oder:
Tabelle1.Range("A1").Resize(UBound(array, 1) - LBound(array, 1) + 1, UBound(array, 2) - LBound( _
array, 2) + 1).Value = Array
Bisher bleibt der Bereich A1:B26600 in Tabelle1 leer.
Was mache ich falsch?

Bild

Betrifft: AW: Array auf einmal in Tabellenblatt schreiben
von: Rudi Maintaire
Geschrieben am: 24.09.2015 11:58:23
Hallo,
der Bereich muss genauso groß sein wie das Array, also 501 Zeilen und 5 Spalten.
Gruß
Rudi

Bild

Betrifft: AW: Array auf einmal in Tabellenblatt schreiben
von: Michael
Geschrieben am: 24.09.2015 16:50:00
Hi Bonduca01,
lies mal bitte: http://www.online-excel.de/excel/singsel_vba.php?f=152
Das ist eine Einsteiger-Info für Arrays.
Was Rudi meint, ist, daß Felder standarmäßig nullbasiert sind, d.h. die Zählung der Felder beginnt bei 0.
Übrigens hilft es Dir nichts, wenn Du das Array erst ab 3 füllst - wenn Du es komplett schreibst, werden Deine vorhandenen Werte in den ersten Zeilen trotzdem überschrieben, vermutlich mit 0 oder "".
Teste mal:

Sub arrayTest()
Dim a(1 To 10, 1 To 5) As Long
Dim zeile As Long, spalte As Long
For zeile = 1 To 10
  For spalte = 1 To 5
    a(zeile, spalte) = zeile * spalte
  Next
Next
Range("A3:E12") = a
Range("b15").Resize(UBound(a, 1) - LBound(a, 1) + 1, UBound(a, 2) - _
   LBound(a, 2) + 1).Value = a
End Sub
Schöne Grüße,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Array auf einmal in Tabellenblatt schreiben"