VBA-Strukturen verwenden

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on März 29, 2023

In diesem Tutorial zeigen wir Ihnen, wie Sie Strukturen in VBA verwenden können.

Eine Struktur in VBA ist im Wesentlichen ein benutzerdefinierter Datentyp. Wenn wir Variablen in VBA verwenden, können wir sie als String-Variablen, Zahlenvariablen usw. deklarieren. Durch das Anlegen einer Struktur wird im Wesentlichen ein neuer Variablentyp erstellt, wobei die Struktur selbst mehrere Datentypen enthalten kann. In vielen Anwendungen von Excel werden Klassenmodule anstelle von Strukturen verwendet, aber das kann dazu führen, dass man eine unnötige Menge an einzelnen Klassenmodulen hat.

Eine Struktur definieren

Eine Struktur beginnt mit dem Wort Type und endet mit End Type.

Type Kunde
 KundenName As String
 KundenTelefon As String
 KundenAdresse As String
 KundenRep As String
End Type

Um diese Struktur innerhalb einer Prozedur zu verwenden, kann man wie folgt vorgehen:

Sub KundenTest ()
 Dim strK As Kunde
 strK.KundenName = "Fred Jones"
 strK.KundenAdresse = " 123 Oak Lane, Cleveland"
 strK.KundenTelefon = "4589341"
 strK.KundenRep = "Jim"
End Sub

Ein Typ ist im Wesentlichen eine Möglichkeit, Variablen zu gruppieren, die alle miteinander in Beziehung stehen, wie z. B. die oben genannten Kundendaten.

Eine Struktur muss in einem Modul gespeichert werden und muss sich am Anfang des Moduls befinden, wo auch die Modulvariablen gespeichert werden.

vba struktur erstellen

Eine Struktur kann nicht in einem Klassen- oder Formularmodul gespeichert werden. Wenn Sie den Typ im Klassenmodul speichern und dann versuchen, ihn aus einem Modul oder sogar aus der Klasse heraus aufzurufen, wird ein Fehler auftreten.

vba struktur in Klassenmodul

Verwendung einer Struktur zum Abrufen von Daten aus einem Bereich

In unserer Arbeitsmappe haben wir die folgende Datentabelle:

vba struktur datentabelle

Wir können nun eine Struktur in einem neuen Modul erstellen, um den Namen des Mitarbeiters, das Alter und die Stellenbeschreibung zu speichern.

Type Mitarbeiter
 MitarbeiterName As String
 MitarbeiterAlter As Integer
 MitarbeiterFunktion As String
End Type

Wir können nun eine Routine erstellen, um einen Excel-Bereich in einer Schleife zu durchlaufen und den Typ mit mehreren Mitarbeitern zu füllen.

Sub MitarbeiterAbrufen()
  Dim Angestellte() As Mitarbeiter
  Dim i As Integer
  ReDim Angestellte(10)
  For i = 0 To 9
    Angestellte(i).MitarbeiterName = Range("B" & i + 2)
    Angestellte(i).MitarbeiterAlter = Range("C" & i + 2)
    Angestellte(i).MitarbeiterFunktion = Range("D" & i + 2)
  Next i
'Im Direktfesnter anzeigen
  For i = 0 To 9
    Debug.Print (Angestellte(i).MitarbeiterName & " ist " & Angestellte(i).MitarbeiterAlter & " Jahre alt und ist als" & Angestellte(i).MitarbeiterFunktion & " angestellt.")
  Next i
End Sub

Zunächst deklarieren wir ein variables Array als Variable vom Typ Mitarbeiter. Dann wird die Array-Größe festgelegt und es wird ein Zellenbereich aus einer Excel-Arbeitsmappe in einer Schleife durchlaufen, um das Array zu aufzufüllen. Anschließend geben wir die Ergebnisse in das Direktfenster aus.

vba struktur ausgeben

Verschachtelte Strukturen

Betrachten Sie die folgenden Strukturen:

vba verschachtelte strukturen

Lassen Sie uns nun eine dritte Struktur unter diesen 2 Strukturen einfügen:

Type Rechnung
  InvRep As Mitarbeiter
  InvCust As Kunde
End Type

Die Variable InvRep wurde als Variablentyp Mitarbeiter definiert, während die Variable InvCust als Variablentyp Kunde definiert wurde.

Wir können also in unserer Prozedur einen Drilldown durchführen, um einige Variablen aufzufüllen.

Wenn wir unsere Prozedur erstellen, erscheint eine Dropdown-Liste mit den für jeden Typ verfügbaren Variablen.

vba verschachtelte strukturen dropdown

Wir können daher unsere Variablen wie in der folgenden Prozedur unten gezeigt ausfüllen:

Sub InfoAbrufen()
  Dim strInv As Rechnung
  strInv.InvCust.KundenName = "Bob Smith"
  strInv.InvCust.KundenAdresse = "123 Oak Lane, Cleveland"
  strInv.InvRep.MitarbeiterName = "Fred Lindburgh"
  strInv.InvRep.MitarbeiterFunktion = "Sales Manager"
End Sub
vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples