Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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 in Tabelle schreiben

Array in Tabelle schreiben
18.09.2018 11:56:12
Peter
Hallo zusammen,
ich möchte aus VBA heraus ein Array in einem Rutsch in eine Tabelle schreiben.
Mein Makro dazu sieht wie folgt aus:
Sub p1()
Dim varaDaten(5)    As Variant
varaDaten(1) = 2
varaDaten(2) = 22
varaDaten(3) = 222
varaDaten(4) = 233
varaDaten(5) = 244
Worksheets("Tabelle1").Range("A2:A5") = varaDaten
End Sub
Leider schreibt mir Excel in jede Zelle den Wert 2 - also den ersten Wert des Arrays :-(
Habt Ihr eine Idee, wo hier mein Denkfehler liegt?
Vielen Dank für Eure Hilfe und viele Grüße
Peter

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array in Tabelle schreiben
18.09.2018 12:14:34
Zacharias
Hallo Peter,
dim i as integer
for i = lbound(varaDaten) to ubound(varaDaten)
worksheets("Tabelle1").cells(i+1,1) = varaDaten(i)
next i
Gruß
Zacharias
AW: Array in Tabelle schreiben
18.09.2018 12:18:12
Zacharias
Außerdem schreibst Du kürzer
dim varadaten as variant
varaDaten = Array(2,22,222,233,244)
AW: Array in Tabelle schreiben
18.09.2018 12:58:10
Peter
Moin Zacharias,
wolte ja das Array in einem Rutsch schreiben ...
Die Lösung von Rudi klappt perfekt.
Die vielen Dank und viel Grüße
Peter
AW: Array in Tabelle schreiben
18.09.2018 14:03:29
Zacharias
die Variante kannte ich noch gar nicht
Wieder was gelernt ;-)
AW: Array in Tabelle schreiben
18.09.2018 12:23:55
Rudi
Hallo,
Worksheets("Tabelle1").Range("A2:A6") = application.transpose(varaDaten)
Gruß
Rudi
Anzeige
AW: Array in Tabelle schreiben
18.09.2018 12:57:10
Peter
Moin Rudi,
warum auch immer es den "Transpose" benötigt ... genau so sollte es sein :-)
Vielen Dank
Gruß
Peter
AW: Array in Tabelle schreiben
18.09.2018 13:10:37
Rudi
Hallo,
warum auch immer es den "Transpose" benötigt
ein eindimensionales Array ist quasi waagerecht orientiert.
Range("A2:E2")=dasArray geht.
Transpose mach ein senkrechtes Array draus.
Geht aber nur bis ca. 65.000 Datensätze.
Gruß
Rudi
AW: Array in Tabelle schreiben
18.09.2018 13:28:09
Peter
Hallo Rudi,
und wieder was gelernt :-)
Vielen Dank und viele Grüße
Peter
AW: Array in Tabelle schreiben
18.09.2018 13:12:10
Daniel
Hi
du kannst im kein eindimensionalen Arrays in ein zweidimensionales Tabellenblatt zurückschreiben.
in VBA funktioniert es nur, weil VBA dein eindimensionales Array automatisch in ein zweidimensionales Array umwandelt.
Dabei muss es sich allerdings entscheiden, ob das neue Array dann eine Zeile und viele Spalten, oder eine Spalte und viele Zeilen haben soll, und VBA entscheidet sich dann für die erste Variante.
da du aber die zweite Variante haben willst (eine Spalte-viele Zeilen) musst du noch wie von Rudi gezeigt Worksheetfunction.Transpose verwenden, welches im Array Zeilen und Spalten tauschst.
nächster (vermutlicher) Denkfehler:
falls du nicht Option Base 1 verwendest, ist der Standard-StartIndex eines Arrays nicht 1, sondern 0.
dh, mit Dim varaDaten(5) erzeugst du ein Feld mit 6 Elemenent (0-5)
wenn du ein Feld mit 5 Elementen haben willst, müsstest du dann eben nur bis 4 dimensionieren oder explizit den Startindex vorgeben: Dim varaDaten(1 to 5)
Außderdem sollte dein Zellbereich immer genauso viele Elemente umfassen wie dein Array, damit das Array auch vollständig eingefügt werden kann.
Daher sollte man die Größe des Zellbereichs nicht fest vorgeben (du hast ja auch nur 4 Zellen und nicht 5 oder 6), sondern die Größe aus dem Array berechnen:
Range("A2").Resize(Ubound(varaDaten) - LBound(varaDaten) + 1, 1).Value = Worksheetfunction.Transpose(varaDaten)
das wäre jetzt die vollständige Variante, welche den Vorteil hätte dass bei einer größenänderung des Arrays der Code an dieser Stelle nicht angepasst werden muss.
Gruß Daniel
Anzeige
AW: Array in Tabelle schreiben
18.09.2018 13:27:30
Peter
Hallo Daniel,
vielen Dank für Deine ausführlichen Infos.
Mit "Option Base 1" hatte ich gearbeitet ... der Rest war mir nicht klar.
Zumal bei vielen Codeschnipselm im Netz das Transpose nie verwendet wird ...
Viel Grüße
Peter

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige