VBA-Strukturen verwenden
In this Article
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.
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.
Verwendung einer Struktur zum Abrufen von Daten aus einem Bereich
In unserer Arbeitsmappe haben wir die folgende 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.
Verschachtelte Strukturen
Betrachten Sie die folgenden 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.
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