Benutzung auf eigene Gefahr ! |
Beschreibung |
In SQL und PASCAL gibt es den IN-Operator für Vergleiche. Vergleiche mit IN sehen dann so aus:
Normalerweise muß man in VBA solche Vergleiche so formulieren:
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: 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 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). |