In dieser neuen Reihe schauen wir uns verschiedene VBA-Funktionen an und zeigen, wie Sie diese sinnvoll einsetzen können. Im ersten Teil widmen wir uns der Klasse Information, die einige wichtige Funktionen liefert. Das bekannteste Element dürfte die IsNull-Funktion sein. Aber auch die anderen Funktionen sollten Sie kennenlernen, damit Sie im Fall der Fälle wissen, wo Sie diese finden und nicht etwa die Funktionen selbst programmieren.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1901_VBAInformationKlasse.accdb.
Funktionen im überblick
Wenn Sie den VBA-Editor einer Access-Anwendung mit der Tastenkombination Alt + F11 öffnen und dann die Taste F2 betätigen, erscheint der Objektkatalog von Access. Hier wählen Sie im Kombinationsfeld oben links den Eintrag VBA aus und dann unter Klassen den Eintrag Information. Danach erscheinen im rechten Fenster alle Funktionen dieser Klasse (siehe Bild 1). Hier sind die Funktionen im überblick:
Bild 1: Die Funktion der Information-Klasse im Objekt-Katalog
- Err: Liefert ein Objekt des Typs ErrObject, über dessen Eigenschaften Sie Informationen über den zuletzt aufgetretenen Fehler auslesen können.
- IMEStatus: Wird nur in fernöstlichen Versionen von Access genutzt.
- IsArray: Gibt mit einem Boolean-Wert an, ob es sich bei der als Parameter übergebenen Variablen um ein Array handelt.
- IsDate: Die Funktion prüft, ob es sich bei dem mit dem Parameter übergebenen Wert um ein gültiges Datum handelt.
- IsEmpty: Diese Funktion prüft, ob eine Variant-Variable bereits durch Zuweisen eines Wertes initialisiert wurde.
- IsError: Die Funktion prüft, ob das Ergebnis einer Funktion ein mit der Funktion CVErr erzeugtes Objekt des Typs Error ist.
- IsMissing: Gibt an, ob ein optionaler Parameter einer Routine mit dem Datentyp Variant beim Aufruf angegeben wurde.
- IsNull: Prüft, ob ein Ausdruck den Wert Null hat.
- IsNumeric: Prüft, ob ein Ausdruck als Zahl interpretiert werden kann.
- IsObject: Gibt an, ob der Parameter ein Variant mit dem Untertyp Objekt ist.
- QBColor: Liefert Farbcodes für die Zahlen von 1 bis 15, die den wichtigsten Farben entsprechen.
- RGB: Ermittelt aus den Rot-, Grün- und Blau-Anteilen den VBA-Farbcode.
- TypeName:
- VarType:
Die Funktion Err
Die Funktion Err liefert ein Objekt des Typs ErrObject zurück. Sie können damit Informationen über den Fehlerstatus unter VBA abfragen. ErrObject enthält immer die Informationen über den zuletzt aufgetretenen Fehler, zum Beispiel die Fehlernummer und die Fehlerbeschreibung.
ErrObject hat als Standardeigenschaft die Eigenschaft Number. Wenn Sie also einfach die Err-Funktion aufrufen, liefert dies die Nummer des zuletzt aufgetretenen Fehlers. Im Direktbereich sieht das so aus, wenn seit Beginn der Session kein Fehler aufgetreten ist:
Err 0
Das ErrObject-Objekt speichert nur die Informationen über Fehler, die nicht über die eingebaute Fehlerbehandlung von Access behandelt werden. Wenn Sie also im Direktbereich etwa mit der folgenden Anweisung einen Fehler auslösen, erscheint die eingebaute Fehlermeldung mit dem Text Laufzeitfehler 11: Division durch Null:
1/0
Die Funktion Err liefert danach aber immer noch den Wert 0. Err nimmt nur Fehlerinformationen auf, wenn sie vorher die eingebaute Fehlerbehandlung deaktivieren, beispielsweise mit der folgenden Anweisung:
Public Sub BeispielError() On Error Resume Next Debug.Print 1 / 0 Debug.Print Err.Number, Err.Description End Sub
Im Direktfenster erscheint dann:
11 Division durch Null
Das ErrObject-Objekt hat die folgenden Methoden und Eigenschaften:
- Clear: Leert das ErrObject-Objekt.
- Description: Liefert die Beschreibung des Fehlers.
- Number: Liefert die Nummer des Fehlers.
- Source: Gibt die Quelle des Fehlers an. In der Regel ist diese Eigenschaft leer, aber wenn Sie etwa mit der Raise-Methode einen Fehler auslösen, können Sie dort einen Wert für Source angeben.
- Raise: Löst den Fehler mit der angegebenen Nummer aus. Sie können dieser Methode unter anderem die Fehlernummer, eine Angabe der Quelle und die Beschreibung übergeben.
IsArray
Wenn Sie prüfen möchten, ob eine Variable ein Array enthält, können Sie die IsArray-Funktion verwenden. Die Funktion erwartet als Parameter den Namen der zu prüfenden Variablen.
Warum aber sollte man diese Funktion benötigen Steht denn nicht immer fest, ob eine Variable ein Array ist oder nicht Nein, denn es kann sein, dass etwa beim Aufruf einer Funktion einem Variant-Parameter entweder ein Array oder eine einfache Variable übergeben wird.
In diesem Fall können Sie mit der Funktion IsArray sicherstellen, ob es sich um ein Array handelt, bevor Sie etwa mit Funktionen wie UBound oder LBound auf die Variable zugreifen.
Die folgende Funktion erwartet eine Variant-Variable, der man sowohl einfache Variablen als auch Array-Variablen übergeben kann. Die Funktion prüft mit der IsArray-Funktion, ob var ein Array ist oder nicht. Im Falle eines Arrays durchläuft die Funktion alle Einträge des Arrays und gibt dessen Elemente im Direktbereich aus. Falls es sich um eine einfache Variable handelt, gibt sie einfach ihren Inhalt aus:
Public Function ArrayOderNicht(var As Variant) Dim i As Integer If IsArray(var) Then For i = LBound(var) To UBound(var) Debug.Print var(i) Next i Else Debug.Print var End If End Function
Wir testen die Funktion zuerst mit der folgenden Prozedur, die eine einfache Variable übergibt:
Public Sub ArrayOderNichtMitVariable() Dim strTest As String strTest = "String-Variable" ArrayOderNicht strTest End Sub
Dies gibt den Text String-Variable im Direktbereich aus. Danach rufen wir die Funktion mit der folgenden Prozedur auf. Diese stellt ein Array mit drei Elementen zusammen und übergibt es an die Funktion ArrayOderNicht:
Public Sub ArrayOderNichtMitArray() Dim strArray(2) As String strArray(0) = "Wert 1" strArray(1) = "Wert 2" strArray(2) = "Wert 3" ArrayOderNicht strArray End Sub
In diesem Fall erscheinen im Direktbereich die drei Einträge des Arrays:
Wert 1 Wert 2 Wert 3
Die Funktion IsDate
Mit dieser Funktion prüfen Sie, ob es sich bei dem mit dem Parameter übergebenen Wert um einen gültigen Datumswert handelt. Dabei ist die Funktion sehr großzügig. Die folgenden Aufrufe zeigen, wie wir das meinen, denn sie liefern alle den Wert True zurück:
Debug.Print IsDate("3/20/2019") Debug.Print IsDate("März 20") Debug.Print IsDate("20-3") Debug.Print IsDate("20/3/19") Debug.Print IsDate("3/20") Debug.Print IsDate("20/3")
Und nun raten Sie mal, welches Datum all diese Datumsangaben liefern, wenn Sie diese mit der Funktion CDate in das Standarddatumsformat konvertieren:
Debug.Print CDate("3/20/2019") Debug.Print CDate("März 20") Debug.Print CDate("20-3") Debug.Print CDate("20/3/19") Debug.Print CDate("3/20") Debug.Print CDate("20/3")
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: