Rubrik: Variablen/Strings · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 23.05.02 |
Wert in Argumentenliste vorhanden? Eine nützliche Funktion, mit der sich prüfen lässt, ob eine Variable einem Wert einer Argumenten-Liste entspricht. | ||
Autor: Dieter Otter | Bewertung: | Views: 13.689 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Variablen und Vergleichsoperatoren - das sind zwei der wichtigsten Bestandteile eines Programms. Nehmen wir an, Sie müssen prüfen, ob der Inhalt einer Variablen dem Wert A, B oder C entspricht. Wie würden Sie hier vorgehen? Wahrscheinlich so:
If Variable = A Or Variable = B Or Variable = C Then
Oder, man verwendet eine Select...Case-Anweisung:
Select Case Variable Case A, B, C ... End Select
Egel ob Sie das bisher über eine If...Or Abfrage oder einer Select...Case Anweisung erledigt haben: es geht auch einfacher
Wie wäre es hiermit?
If vInArgList(Variable, A, B, C) Then
Und natürlich auch so:
If vInArgList(Variable, A, C, D, F, H, W) Then
Egal wieviele Oder-Vergleiche benötigt werden - Sie brauchen für die Abfrage zukünftig immer nur noch eine Codezeile!
Fügen Sie hierzu nachfolgende Funktion in ein Modul:
' Wert in Argumentenliste vorhanden? Public Function vInArgList(ByVal vValue As Variant, _ ParamArray vArg() As Variant) As Boolean Dim I As Integer Dim bFound As Boolean bFound = False For I = 0 To UBound(vArg) If vValue = vArg(I) Then bFound = True: Exit For End If Next I vInArgList = bFound End Function
Die Funktionsparameter sind vom Datentyp Variant, so daß Sie die Funktion auf alle Datentypen (Integer, Long, String, usw.) anwenden können.
Kleines Anwendungsbeispiel:
Sie proggen gerade ein Fakturamodul, in dem der Anwender bestimmen kann, ob er eine Rechnung, ein Angebot, ein Lieferschein, eine Gutschrift, eine Teilrechnung oder einen Kostenvoranschlag erstellen will. Lagerbestände sollen aber nur dann aktualisiert werden, wenn als Auftragsform "Rechnung", "Lieferschein" oder "Teilrechnung" gewählt ist.
Private Enum AuftragForm Rechnung = 0 Angebot = 1 Auftragsbestaetigung = 2 Lieferschein = 3 Gutschrift = 4 Teilrechnung = 5 Kostenvoranschlag = 6 End Enum Private iAuftrag As Auftragform
Anstelle von:
If iAuftrag = Rechnung Or _ iAuftrag = Lieferschein Or _ iAuftrag = Teilrechnung Then
lautet die Abfrage nun:
If vInArgList(iAuftrag, Rechnung, Lieferschein, Teilrechnung) Then
Eine Codier-Erleichterung, die Sie schon bald sehr zu schätzen wissen