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-ID: 231860

Url: https://administrator.de/forum/probleme-mit-mehrdimensionalen-arrays-in-vb-net-231860.html

Ausgedruckt am: 12.04.2025 um 02:04 Uhr

emeriks
Lösung emeriks 06.03.2014 aktualisiert um 15:49:43 Uhr
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.
MarcoBorn
MarcoBorn 06.03.2014 um 13:45:29 Uhr
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
emeriks
emeriks 06.03.2014 aktualisiert um 13:47:59 Uhr
Goto Top
Reden wir tatsächlich von VB.Net oder etwa VBA?
MarcoBorn
MarcoBorn 06.03.2014 um 13:52:27 Uhr
Goto Top
Von VB.NET. Ich programmiere in SharpDevelop eine DLL, die dann auch auf Excel zugreift.
emeriks
emeriks 06.03.2014 um 13:57:35 Uhr
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.
MarcoBorn
MarcoBorn 06.03.2014 um 14:02:52 Uhr
Goto Top
Das ist dieselbe Syntaxt wie in Visual Studio. Ist quasi eine OpenSource-Umsetzung einer IDE für .NET.
emeriks
emeriks 06.03.2014 um 14:16:13 Uhr
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.
MarcoBorn
MarcoBorn 06.03.2014 um 14:51:45 Uhr
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....
colinardo
Lösung colinardo 06.03.2014 aktualisiert um 15:50:00 Uhr
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
MarcoBorn
MarcoBorn 06.03.2014 um 15:48:09 Uhr
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.