marcoborn
Goto Top

Probleme mit mehrdimensionalen Arrays in VB.NET

Hallo Forum,
ich versuche gerade, in VB.NET ein mehrdimensionales Array zu definieren, dann mit Werten zu füllen und anschließend diese an Excel zu übergeben. Ziel ist in Excel eine Tabelle, die 6 Spalten enthält, wobei die Zahl der Zeilen variieren kann. Aus Performancegründen will ich nicht die Werte einzeln in die Excel-Zellen schreiben, sondern das gesamte Array mit einem einzelnen Befehl.

Folgenden Code habe ich dazu ausprobiert:

Dim myArray() as Object
For i = 1 to Anzahl
ReDim Preserve myArray(Anzahl, Anzahl, Anzahl, Anzahl, Anzahl, Anzahl)
Hilfsarray1(i) = Variable1
Hilfsarray2(i) = Variable2
Hilfsarray3(i) = Variable3
Hilfsarray4(i) = Variable4
Hilfsarray5(i) = Variable5
Hilfsarray6(i) = Variable6
myArray() = (Hilfsarray1(i), Hilfsarray2(i), Hilfsarray3(i), Hilfsarray4(i), Hilfsarray5(i), Hilfsarray6(i))
Next
xlApp.Range(Cells(1, 1), Cells(Anzahl, 6)) = myArray


Variable1 bis Variable6 stehen für jeweils 6 Werte, die in die entsprechenden Spalten geschrieben werden. Irgendwo ist aber der Wurm drin, weil das Makro mit nichtssagenden Fehlermeldungen abbricht. Ich bin hinsichtlich Arrays in VB.NET noch völlig unerfahren und für jeden Hinweis dankbar.


Viele Grüße,
M. Born

Content-Key: 231860

Url: https://administrator.de/contentid/231860

Printed on: May 4, 2024 at 23:05 o'clock

Member: emeriks
Solution emeriks Mar 06, 2014 updated at 14:49:43 (UTC)
Goto Top
Erstmal: Eine einfache Tabelle hat nur 2 Dimensionen: Zeilen und Spalten

Versuchs mal so:

Dim Rows As New List(Of Array)
Rows.Add({"a", "b", "c", "d", "e", "f"})  

Rows.Add({Var1, Var2, Var3, Var4, Var5, Var6})

Dim RowArray() = Rows.ToArray

E.
Member: MarcoBorn
MarcoBorn Mar 06, 2014 at 12:45:29 (UTC)
Goto Top
Hallo emeriks,
in Zeile 2 meckert mein Compiler folgendes an: Komma, ")" oder gültige Ausdrucksfortsetzung erwartet.
Denselben Fehler erhalte ich für Zeile 4, wenn ich Zeile 2 auskommentiere.

Ist da noch was anderes falsch?

M. Born
Member: emeriks
emeriks Mar 06, 2014 updated at 12:47:59 (UTC)
Goto Top
Reden wir tatsächlich von VB.Net oder etwa VBA?
Member: MarcoBorn
MarcoBorn Mar 06, 2014 at 12:52:27 (UTC)
Goto Top
Von VB.NET. Ich programmiere in SharpDevelop eine DLL, die dann auch auf Excel zugreift.
Member: emeriks
emeriks Mar 06, 2014 at 12:57:35 (UTC)
Goto Top
Ah, ok. Da kann ich dann nicht helfen. Diese IDE habe ich noch nie benutzt.

Aber im Prinzip musst Du jetzt nur rausfinden, wie die entsprechende Syntax in dieser IDE aussehen muss.

E.
Member: MarcoBorn
MarcoBorn Mar 06, 2014 at 13:02:52 (UTC)
Goto Top
Das ist dieselbe Syntaxt wie in Visual Studio. Ist quasi eine OpenSource-Umsetzung einer IDE für .NET.
Member: emeriks
emeriks Mar 06, 2014 at 13:16:13 (UTC)
Goto Top
Na offensichtlich nicht. Der von mir genannte Code wird bei mir in der IDE (VS 2012) jedenfalls nicht angemeckert.

Vielleicht Problem mit Copy&Paste? Schreib mal von Hand ab, vielleicht hilft's.

E.
Member: MarcoBorn
MarcoBorn Mar 06, 2014 at 13:51:45 (UTC)
Goto Top
Hat leider auch nicht geholfen. Aber Dein Hiweis, dass Excel nur 2 Dimensionen kennt, war wahrscheinlich der richtige Tipp. Ich brauch ja auch kein 6-dimensionales Array, sondern eine Tabelle mit 6 Spalten. Die Zahl der ausgeworfenen Fehler nimmt schon ab....
Member: colinardo
Solution colinardo Mar 06, 2014 updated at 14:50:00 (UTC)
Goto Top
Hallo M.Born,
für die Zuweisung an einen Range in Excel brauchst du ein reines 2-Dimensionales String-Array. Es dürfen keine geschachtelten Array's sein.
Als Beispiel siehe dazu: http://stackoverflow.com/questions/12545054/array-to-excel-using-vb-net

Grüße Uwe
Member: MarcoBorn
MarcoBorn Mar 06, 2014 at 14:48:09 (UTC)
Goto Top
Folgender Code funktioniert:

Dim myArr(länge, 6) As Object
For i = 1 to Anzahl
myArr(i, 0) = Variable1
myArr(i, 1) = Variable2
myArr(i, 2) = Variable3
myArr(i, 3) = Variable4
myArr(i, 4) = Variable5
myArr(i, 5) = Variable6
Next
xlApp.Range(Cells(1, 1), Cells(UBound(myArr, 1), UBound(myArr, 2))) = myArr

Danke für den Wink mit dem Zaunpfahl, emeriks.