2017-12-19 5 views
0

Ich habe ein 2D-Array variabler Größe, das sowohl in der Zeilen- als auch in der Spaltendimension liegen kann. Wenn ich die Daten aus einem Array auf einen Bereich schreibe in Excel ich derzeit diese Zeile Code verwenden:Muss ich einen Bereich angeben, wenn ich aus einem Array in Zellen schreibe?

Wksht.Range("A1:I2019").Value = dataArr 

wo dataArr meine Array ist, dass ich in Excel auf einen Bereich schreiben muß.

Ich möchte meinen Bereich (A1: I2019) variabel halten, um jede Größe des Arrays zu akzeptieren. Gibt es einen effizienten Weg, um dies zu umgehen? Ich dachte daran, eine Art von String-Builder oder String.concat-Funktion zu verwenden, während ich die Zeilen und Spalten meines Arrays zähle, aber ich denke, dass es einen besseren Weg geben muss.

Antwort

2

Ja.

Die einfache Methode ist mit .Resize

Wksht.Range("A1").Resize(ubound(dataarr,1),ubound(dataarr,2)).Value = dataArr 

Eine Anmerkung:

Obiges ist speziell für die Basis 1 Arrays. Für Base 0 Arrays + 1 zu beiden ubound().

Wenn Ihr Array beginnt um etwas anderes, dass 0 oder 1, die nicht häufig, aber nicht unbekannt ist, oder, wenn Sie nicht sicher sind, welche, dann können Sie diese verwenden:

Wksht.Range("A1").Resize(ubound(dataarr,1)-Lbound(dataarr,1)+1,ubound(dataarr,2)-Lbound(dataarr,2)+1,).Value = dataArr 
+0

Danke Scott! Das funktioniert perfekt. Wenn Sie Ihre Linie betrachten, ist es sinnvoll, die obere Grenze meiner Array-Größe zu verwenden. Danke noch einmal! –

Verwandte Themen