[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

IN()-Statement für Vergleiche in VBA

Sprache / Programm: VBA ab Office 97
Beschreibung

In SQL und PASCAL gibt es den IN-Operator für Vergleiche.

Vergleiche mit IN sehen dann so aus:

IF Zahl IN(2, 5, 8) THEN ...

Normalerweise muß man in VBA solche Vergleiche so formulieren:

IF (Zahl=2) OR (Zahl=5) OR (Zahl=8) THEN ...

Das macht den Code aber unübersichtlich.

VBA-Quelltext
' Funktion für Vergleiche von einem Wert mit mehreren Möglichkeiten
Public Function InAuswahl(Argument, ParamArray Auswahl()) As Boolean
    Dim Nr As Integer
    InAuswahl = True
    For Nr = LBound(Auswahl) To UBound(Auswahl)
        If Argument = Auswahl(Nr) Then Exit Function
    Next Nr
    InAuswahl = False
End Function
Rückgabewert

Wahrheitswert (TRUE oder FALSE), je nach dem, wie der Vergleich ausgegangen ist.

Anwendungsbeispiel(e)...

Die folgende Funktion nutzt InAuswahl, um den Datentyp eines Feldes in einer Tabelle zu bestimmen:

Public Sub AnzeigeFeldTyp(Feld As Field)

    If InAuswahl(Feld.Type, dbByte, dbInteger, dbLong) Then

        MsgBox "Feld enthält Ganzzahlen"

    ElseIf InAuswahl(Feld.Type, dbCurrency, dbSingle, dbDouble) Then

        MsgBox "Feld enthält Fließkommazahlen"

    Else

        MsgBox "Ach, wen interessiert das ?"

    End If

End Sub

Hinweis

In Access gibt es eine Hintertür, um den IN Operator auch in VBA zu nutzen: Die Anweisung

MeineZahl = 5

Stimmt = EVAL(MeineZahl & " IN(3, 5)")

speichert den Wert -1 (= TRUE)  in die Variable 'Stimmt'. Dabei wird das IN aus SQL benutzt.

Der Nachteil ist daher klar: Um In zu nutzen, müssen die Werte in der Klammer von IN in eine Form umgewandelt werden, die SQL versteht (z.B. mit meiner Funktion CSql).