Structure von Arrays in VB.NET
Hallo Forum,
ich habe 2 Fragen zum Thema Structures in VB.NET:
1. Ist es möglich, in VB.NET eine Structure zu definieren, deren Parameter Arrays sind?
2. Nachdem ich die Struktur mit Werten gefüllt habe, möchte ich gern die ganze Struktur in einen Zellbereich in Excel einfügen. Also irgendwas in der Art.
Ist das Ganze möglich? Und wie würde der Code für Frage 2 aussehen?
Vielen Dank,
M. Born
ich habe 2 Fragen zum Thema Structures in VB.NET:
1. Ist es möglich, in VB.NET eine Structure zu definieren, deren Parameter Arrays sind?
Public Structure MeineStruktur
Public Spalte1(0 To 100) As Long
Public Spalte2(0 To 100) As String
Public Spalte3(0 To 100) As Long
Public Spalte4(0 To 100) As Long
Public Spalte5(0 To 100) As Long
Public Spalte6(0 To 100) As String
End Structure
2. Nachdem ich die Struktur mit Werten gefüllt habe, möchte ich gern die ganze Struktur in einen Zellbereich in Excel einfügen. Also irgendwas in der Art.
'AppXL ist als Excel-Objekt definiert
Dim MyStructure as Meine Struktur
...
AppXL.ActiveSheet.Cells = MeineStruktur.Value
Ist das Ganze möglich? Und wie würde der Code für Frage 2 aussehen?
Vielen Dank,
M. Born
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 246735
Url: https://administrator.de/contentid/246735
Ausgedruckt am: 24.11.2024 um 15:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo M.Born,
ja das geht. Du hast hier zwei Möglichkeiten das gewünschte Umzusetzen. Einmal indem du für jede Spalte ein Array definierst (wie du es machen willst) oder es mit einem einzelnen zweidimensionalen Array das du mit allen deinen Werten füllst.(p.s. ich verwende im Beispiel die .NET-Referenz zum Zugriff auf Excel.)
Grüße Uwe
ja das geht. Du hast hier zwei Möglichkeiten das gewünschte Umzusetzen. Einmal indem du für jede Spalte ein Array definierst (wie du es machen willst) oder es mit einem einzelnen zweidimensionalen Array das du mit allen deinen Werten füllst.(p.s. ich verwende im Beispiel die .NET-Referenz zum Zugriff auf Excel.)
Beispiel: Variante 1 mit einem einzelnen zweidimensionalen Array
Public Structure myStruct
Dim Spalten(,) As Object
End Structure
Sub FillRange()
Dim objXL As New Excel.Application
'Struktur erzeugen
Dim s As myStruct
'zweidimensionales Array anlegen (Zeilen,Spalten)
s.Spalten = New Object(10, 10) {}
'Array mit Beispieldaten füllen
For c = 0 To 10
For r = 0 To 10
s.Spalten(r, c) = "Test" & c & "." & r
Next
Next
'Excel anzeigen und Workbook und Worksheet referenzieren
objXL.Visible = True
Dim wb As Workbook = objXL.Workbooks.Add()
Dim ws As Worksheet = wb.Worksheets(1)
'Array einem Bereich in Excel zuweisen
ws.Range("A1").Resize(s.Spalten.GetLength(0), s.Spalten.GetLength(1)).Value = s.Spalten
End Sub
Beispiel Variante 2 mit mehreren Arrays für die Spalten
Public Structure myStruct
Dim Spalte1(,) As Object
Dim Spalte2(,) As Object
End Structure
Sub FillRange()
Dim objXL As New Excel.Application
'Struktur erzeugen
Dim s As myStruct
'Arrays anlegen
s.Spalte1 = New Object(10, 0) {}
s.Spalte2 = New Object(10, 0) {}
'Arrays mit Beispieldaten füllen
For i = 0 To 10
s.Spalte1(i, 0) = "Daten Spalte 1." & i
s.Spalte2(i, 0) = "Daten Spalte 2." & i
Next
'Excel anzeigen und Workbook und Worksheet referenzieren
objXL.Visible = True
Dim wb As Workbook = objXL.Workbooks.Add()
Dim ws As Worksheet = wb.Worksheets(1)
'Über die Arrays in der Struct iterieren
Dim t As Type = GetType(myStruct)
Dim counter As Integer = 1
For Each myField As System.Reflection.FieldInfo In t.GetFields()
'Array holen
Dim arr As Object = myField.GetValue(s)
' Anzahl der Zeilen des Arrays ermitteln
Dim arr_length As Integer = arr.GetLength(0)
'Daten in Excel schreiben
ws.Cells(1, counter).Resize(arr_length).Value = arr
counter += 1
Next
End Sub