Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: MarcoBorn

MarcoBorn (Level 1) - Jetzt verbinden

18.08.2014 um 11:44 Uhr, 1871 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 ..
Ähnliche Inhalte
Visual Studio

Probleme mit mehrdimensionalen Arrays in VB.NET

gelöst Frage von MarcoBornVisual Studio10 Kommentare

Hallo Forum, ich versuche gerade, in VB.NET ein mehrdimensionales Array zu definieren, dann mit Werten zu füllen und anschließend ...

Visual Studio

VB.Net Zugriff auf Structure innerhalb eines Dictionaries

gelöst Frage von ChrFriedelVisual Studio6 Kommentare

Hallo zusammen, ich bin gerade eben über etwas gestolpert von dem ich mal einen Beispielcode verfasst habe: Zeile 14 ...

Visual Studio

Verschachtelte Arrays

gelöst Frage von MarcoBornVisual Studio19 Kommentare

Hallo Forum, ich habe in VB.NET 6 Arrays, die alle dieselbe Länge, aber unterschiedliche Datentypen haben. Array1 ist vom ...

Windows Server

Arrays vergleichen mit Powershell

gelöst Frage von SlainteMhathWindows Server5 Kommentare

Moin, ich sitze hier vor einen Problem mit Powershell, das mich schier wahnsinnig macht. Hintergrund: Die auf einem Windows ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing19 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

Grafikkarten & Monitore
4k EIZO Monitor, Fernseher und Splitter
Frage von LerxxeyGrafikkarten & Monitore9 Kommentare

Hallo Zusammen, vielleicht könnt ihr mir bei einem Problem helfen wo ich einfach nicht mehr weiterkomme Und zwar haben ...