Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Structure von Arrays in VB.NET

Frage Entwicklung Visual Studio

Mitglied: MarcoBorn

MarcoBorn (Level 1) - Jetzt verbinden

18.08.2014 um 11:44 Uhr, 1461 Aufrufe, 4 Kommentare

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?
01.
Public Structure MeineStruktur 
02.
  Public Spalte1(0 To 100) As Long  
03.
  Public Spalte2(0 To 100) As String 
04.
  Public Spalte3(0 To 100) As Long 
05.
  Public Spalte4(0 To 100) As Long 
06.
  Public Spalte5(0 To 100) As Long 
07.
  Public Spalte6(0 To 100) As String 
08.
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.
01.
'AppXL ist als Excel-Objekt definiert 
02.
Dim MyStructure as Meine Struktur 
03.
... 
04.
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
Mitglied: colinardo
LÖSUNG 18.08.2014, aktualisiert 20.08.2014
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.)
Beispiel: Variante 1 mit einem einzelnen zweidimensionalen Array
01.
Public Structure myStruct 
02.
  Dim Spalten(,) As Object 
03.
End Structure 
04.
 
05.
Sub FillRange() 
06.
    Dim objXL As New Excel.Application 
07.
 
08.
    'Struktur erzeugen 
09.
    Dim s As myStruct 
10.
    'zweidimensionales Array anlegen (Zeilen,Spalten) 
11.
    s.Spalten = New Object(10, 10) {} 
12.
 
13.
    'Array mit Beispieldaten füllen 
14.
    For c = 0 To 10 
15.
        For r = 0 To 10 
16.
            s.Spalten(r, c) = "Test" & c & "." & r 
17.
        Next 
18.
    Next 
19.
 
20.
    'Excel anzeigen und Workbook und Worksheet referenzieren 
21.
    objXL.Visible = True 
22.
    Dim wb As Workbook = objXL.Workbooks.Add() 
23.
    Dim ws As Worksheet = wb.Worksheets(1) 
24.
 
25.
    'Array einem Bereich in Excel zuweisen 
26.
    ws.Range("A1").Resize(s.Spalten.GetLength(0), s.Spalten.GetLength(1)).Value = s.Spalten 
27.
End Sub
Beispiel Variante 2 mit mehreren Arrays für die Spalten
01.
Public Structure myStruct 
02.
    Dim Spalte1(,) As Object 
03.
    Dim Spalte2(,) As Object 
04.
End Structure 
05.
 
06.
Sub FillRange() 
07.
    Dim objXL As New Excel.Application 
08.
 
09.
    'Struktur erzeugen 
10.
    Dim s As myStruct 
11.
    'Arrays anlegen 
12.
    s.Spalte1 = New Object(10, 0) {} 
13.
    s.Spalte2 = New Object(10, 0) {} 
14.
    'Arrays mit Beispieldaten füllen 
15.
    For i = 0 To 10 
16.
        s.Spalte1(i, 0) = "Daten Spalte 1." & i 
17.
        s.Spalte2(i, 0) = "Daten Spalte 2." & i 
18.
    Next 
19.
    'Excel anzeigen und Workbook und Worksheet referenzieren 
20.
    objXL.Visible = True 
21.
    Dim wb As Workbook = objXL.Workbooks.Add() 
22.
    Dim ws As Worksheet = wb.Worksheets(1) 
23.
 
24.
    'Über die Arrays in der Struct iterieren 
25.
    Dim t As Type = GetType(myStruct) 
26.
    Dim counter As Integer = 1 
27.
    For Each myField As System.Reflection.FieldInfo In t.GetFields() 
28.
        'Array holen 
29.
        Dim arr As Object = myField.GetValue(s) 
30.
        ' Anzahl der Zeilen des Arrays ermitteln 
31.
        Dim arr_length As Integer = arr.GetLength(0) 
32.
        'Daten in Excel schreiben 
33.
        ws.Cells(1, counter).Resize(arr_length).Value = arr 
34.
        counter += 1 
35.
    Next 
36.
End Sub
Grüße Uwe
Bitte warten ..
Mitglied: MarcoBorn
18.08.2014 um 14:44 Uhr
Hallo Uwe,
vielen Dank für die schnelle Beantwortung. Ich tendiere eher zur 2. Fassung, da ich meine Struktur auch in einer Schleife befülle. Kann ich auch die Struktur als Ganzes an einen Range in Excel übergeben? Das zellenweise Befüllen kostet zuviel Performance und ist der eigentliche Grund, warum ich erst die Werte in einer Struktur zwischenspeichern möchte.

Vielen Dank,
M. Born
Bitte warten ..
Mitglied: colinardo
18.08.2014, aktualisiert um 15:04 Uhr
Das ist kein zellenweises Befüllen sondern nur ein Iterate über die Arrays im Struct....Die Arrays werden jeweils in einem Rutsch an Excel übergeben.

Btw. lässt sich das Befüllen auch in der ersten Variante problemlos machen. Ich würde die erste bevorzugen...
Bitte warten ..
Mitglied: MarcoBorn
18.08.2014 um 14:51 Uhr
Ok, danke. Bin gerade dabei, das Ganze in meinen Code einzubauen.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Visual Studio
gelöst VB.Net - Problem mit Umleitung der Standard-Ausgabe (4)

Frage von emeriks zum Thema Visual Studio ...

Visual Studio
gelöst Vb.net Pfadangabe mit Wildcards wie Stern Regex Pattern (2)

Frage von Pilger83 zum Thema Visual Studio ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...