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, 1646 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
Vb.net Datenfelder aus Word 2003 Dokument auslesen (3)

Frage von Herbrich19 zum Thema Visual Studio ...

VB for Applications
VB.net Combobox databinding langsam (4)

Frage von ForgottenRealm zum Thema VB for Applications ...

Visual Studio
gelöst Vb.net: Word-Doc seitenweise durchsuchen nach Textmarke (7)

Frage von ahstax zum Thema Visual Studio ...

Basic
gelöst Mit vb.net PDF in Word-Dok einfügen (10)

Frage von ahstax zum Thema Basic ...

Neue Wissensbeiträge
Administrator.de Feedback

Umgangsformen auf der Seite

(7)

Information von Frank zum Thema Administrator.de Feedback ...

Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(11)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Dir tc Befehl unter Windows 10 macht Probleme (14)

Frage von sugram zum Thema Batch & Shell ...

Windows Server
Windows Server Komplettspiegelung (13)

Frage von pdiddo zum Thema Windows Server ...

Windows Server
Windows Server 2016 RDS Remoteapp Anzeigefehler (11)

Frage von qlnGenius zum Thema Windows Server ...