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

Frage Entwicklung Visual Studio

Mitglied: MarcoBorn

MarcoBorn (Level 1) - Jetzt verbinden

18.08.2014 um 11:44 Uhr, 1778 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 ...

PHP
Aus Arrays neue Arrays erzeugen!
gelöst Frage von FunkerVogtPHP8 Kommentare

Hallo Gemeinde, ich hoffe Ihr könnt mir bei meiner Problematik helfen und meinen kleinen gordischen Knoten im Kopf lösen. ...

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 ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 21 StundenBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 23 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows 10
Windows 10 GPO Powershell Skript Registry bearbeiten
Frage von potshockWindows 1010 Kommentare

Hi Admins, Gegeben ist ein Windows 2012 R2 Server an welchen ich Gpos für Windows 10 Clients bereitstelle. U.a. ...

Microsoft
Erfahrungen mit Webcam over RDP gesucht
Frage von DerWoWussteMicrosoft10 Kommentare

Moin Kollegen. Bekanntlich kann man Webcams nur mit Drittanbietersoftware in RDP reinschleifen. Was nutzt Ihr dazu? Wie stabil funktioniert ...