Benutzerdefinierte Datentypen

By , 8. November 2010

Man unterscheidet zwei verschiedene Typen von benutzerdefinierte Datentypen:
a) den Aufzählungstyp
b) den Verbundtyp

Der Grundlegende Gedanke hinter den benutzerdefinierten Datentypen ist, zusammengehörige Informationen nicht in vielen verschiedenen Variablen zu speichern sondern in nur 1 Datentyp. Dies führt zur Vereinfachung und zur Übersichtlichkeit im VBA-Code.

a) Aufzählungstyp:
Der Aufzählungstyp beinhaltet eine Variable mit einem begrenzten abzählbaren Wertebereich. Er wird durch die Enum-Anweisung gebildet. Wir machen gleich mal ein Beispiel damit Sie sehen was ich damit meine. Z.B. möchten Sie in Ihrer Anwendung verschiedene Sicherheitsstufen realisieren um Mitarbeiter z.B. vor verschiedene Gefahrensituationen zu warnen.
Hier ein frei erfundenes Szenario:

Public Enum Securitylevel
    normal = 0
    leicht erhoeht = 1
    erhoeht = 2
    Gefahr = 3
    akute Gefahr = 4
    Evakuierung  = 5
End Enum

Nun können Sie im Code auf den Datentyp zugreifen und den Wert verändern:

Dim security As Securitylevel
security = 1
Alternativ: security = Gefahr


Beide Möglichkeiten sind korrekt. Wenn Sie den Konstantenausdruck (0 bis 5) so in einer Reihe angeben kann man ihn auch weglassen, da Enum intern immer die Elemente von 0 an durchnumeriert.
Sie können der Variable einen numerischen Wert zuweisen der nicht vorkommt, z.b. die 6, aber Sie können keinen Elementnamen der nicht vorhanden ist zuweisen.
Also security = 6 geht, security = Test geht nicht.
Beachten Sie dass der Elementname nicht durch Anführungszeichen begrenzt ist.

Den Wert abfragen:

Select case security
    Case 0:
        Me!Meldung.Caption = "Alle Werte im normalen Bereich"
     ....
    Case 5:
        Me!Meldung.Caption = "Notfall! Evakuieren!!"
        call Notfallplan5
End Select

Die Deklaration des Enum-Datentyps hat in einem Codemodul zu erfolgen. Falls die Deklaration nicht vom Typ Public ist, ist der Datentyp nur innerhalb des Moduls sichtbar.

b) Verbundtyp

Während beim Aufzählungstyp Ausprägungen einer Variable gespeichert sind, werden beim Verbundtyp zusammengehörige Daten von mehreren Variablen in einem Typ zusammengefasst. Beispiele dazu sind z.b. Adressdaten, Koordinatendaten, Maschinenparameter etc.

Wir wollen das am Beispiel von Koordinatendaten mal durchspielen. Der Verbundtyp wird über das Schlüsselwort Type angelegt:
Public Type Koordinaten
B As String
L As String
End Type

'Nachfolgender Code speichert einen Koordinatenpunkt:
Dim Pos1 As Koordinaten
Pos1.B = "48.290732"
Pos1.L = "11.579847"

'und öffnet Google Maps mit den angegebenen Koordinaten:
FollowHyperlink ("http://maps.google.com/maps?ll=" & Pos1.B & "," & Pos1.L & "&spn=0.002,0.005&t=s&hl=de")

Das schöne an den Verbundtypen ist, dass die komplette intellisence angeboten wird.
Bereits beim Deklarieren von Pos1 wird bei der Eingabe des K von Koordinaten der entsprechende Eintrag in der Liste markiert. Auch beim Setzen der Werte B und L wird die Intellisence angeboten sobald man Pos. eingibt, wie auf nachfolgenden Bildern zu sehen.

AV 2010

Leave a Reply

You must be logged in to post a comment.

OfficeFolders theme by Themocracy