User Tools

Site Tools


vba:functions:inset

This is an old revision of the document!


[VBA] inSet()

Diese Funktion dient als IN(),wie man sie in vielen anderen Sprachen kennt. Sie kann aber auch ein in_array() abdecken.

download udf_inset.bas

Definition

found = inSet(search, value1 [,value2... [,value#]])
Public Function inSet(ByRef iSearch As Variant, ParamArray iItems() As Variant) As Boolean

Parameters

  • iSearch Wert der gesucht wird
  • ParamArray iItems* Werte gegen die geprüft wird. Sind die Werte Arrays, werden die Arrays durchsucht

Rückgabewert

True oder False. Je nachdem ob der Wert in der Menge ist oder nicht

Beispiele

debug.print inset(2, 1, 2, 3)  ' true
debug.print inset(2, array(1, 2, 3))  ' true
debug.print inset(2, array(1, 2), 3)  ' true
debug.print inset(3, array(1, 2), 3)  ' true

Code

udf_inset.bas
Attribute VB_Name = "udf_inSet"
'-------------------------------------------------------------------------------
'File         : udf_inSet.bas
'               Copyright mpl by ERB software
'               All rights reserved
'               http://wiki.yaslaw.info/dokuwiki/doku.php/vba/cast/strtodate
'Environment  : VBA 2007 +
'Version      : 1.1.0
'Name         : inSet
'Author       : Stefan Erb (ERS)
'History      : 30.04.2014 - ERS - Creation
'               27.06.2014 - ERS - Die màgliche hinzugefügt, Arrays zu übergeben
'-------------------------------------------------------------------------------
Option Explicit
 
'/**
' * Prüft ein Wert gegen eine Liste von Werten.
' * Dient als Ersatz des Befehls IN(), den man in vielen anderen Sprachen kennt
' * Bei Objekten geht es nur auf dieselbe Instanz.
' *
' *     inSet(search, value1 [,value2 ... [,value#]])
' *
' * @param  Variant     Wert der gesucht wird
' * @paramArray         Werte gegen die geprüft wird. Sind die Werte Arrays, werden die Arrays durchsucht
' * @return Boolean     Flag ob der Wert gefunden wird
Public Function inSet(ByRef iSearch As Variant, ParamArray iItems() As Variant) As Boolean
    inSet = inSetArray(iSearch, CVar(iItems))
End Function
 
' * @param  Variant     Wert der gesucht wird
' * @param  Array       Werte gegen die geprüft wird. Sind die Werte Arrays, werden die Arrays durchsucht
' * @return Boolean     Flag ob der Wert gefunden wird
Private Function inSetArray(ByRef iSearch As Variant, ByRef iItems As Variant) As Boolean
    Dim item As Variant: For Each item In iItems
        'Null Vergleich
        If IsNull(iSearch) Or IsNull(item) Then
            inSetArray = IsNull(iSearch) = IsNull(item)
        ElseIf IsArray(item) Then
            inSetArray = inSetArray(iSearch, item)
        'Objekt-Vergleich
        ElseIf IsObject(iSearch) And IsObject(item) Then
            inSetArray = (iSearch Is item)
        'Value-Vergleich
        ElseIf Not IsObject(iSearch) And Not IsObject(item) Then
            inSetArray = (Nz(iSearch) = Nz(item))
        End If
        If inSetArray Then Exit Function
    Next item
End Function
vba/functions/inset.1404392165.txt.gz · Last modified: 03.07.2014 14:56:05 by yaslaw