This is an old revision of the document!
Diese Funktion dient als IN(),wie man sie in vielen anderen Sprachen kennt. Sie kann aber auch ein in_array() abdecken.
found = inSet(search, value1 [,value2... [,value#]])
Public Function inSet(ByRef iSearch As Variant, ParamArray iItems() As Variant) As Boolean
True oder False. Je nachdem ob der Wert in der Menge ist oder nicht
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
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