This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
vba:functions:inset [03.07.2014 14:56:05] yaslaw created |
vba:functions:inset [29.04.2015 11:03:29] (current) yaslaw |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | <const> | ||
+ | version=1.3.0 | ||
+ | vdate=11.09.2014 | ||
+ | fname=udf_inset.bas | ||
+ | ns=%NAMESPACE% | ||
+ | fpath=/vba/functions | ||
+ | </const> | ||
+ | {{keywords>vba,dictionary,cast,create dictionary,function}} | ||
+ | {{description>Diese Funktion erstellt auf verschiedene Arten ein Dictionary. V-%%version%%}} | ||
+ | |||
====== [VBA] inSet() ====== | ====== [VBA] inSet() ====== | ||
- | Diese Funktion dient als IN(),wie man sie in vielen anderen Sprachen kennt. Sie kann aber auch ein in_array() abdecken. | + | //Diese Funktion dient als IN(),wie man sie in vielen anderen Sprachen kennt. Sie kann aber auch ein in_array() abdecken. |
- | + | // | |
- | {{:vba:functions:udf_inset.bas|download udf_inset.bas}} | + | ==Version %%version%% %%vdate%%== |
+ | {{%%fname%%|Download %%fname%% (V-%%version%%)}} | ||
===== Definition ===== | ===== Definition ===== | ||
- | <code>found = inSet(search, value1 [,value2... [,value#]])</code> | + | <code>found = inSet(search, value1 [,value2... [,value#]]) |
+ | found = inSet(search, valueList)</code> | ||
<code vb>Public Function inSet(ByRef iSearch As Variant, ParamArray iItems() As Variant) As Boolean</code> | <code vb>Public Function inSet(ByRef iSearch As Variant, ParamArray iItems() As Variant) As Boolean</code> | ||
==== Parameters ==== | ==== Parameters ==== | ||
***iSearch** Wert der gesucht wird | ***iSearch** Wert der gesucht wird | ||
- | ***ParamArray iItems*** Werte gegen die geprüft wird. Sind die Werte Arrays, werden die Arrays durchsucht | + | ***%%ParamArray iItems%%*** Werte gegen die geprüft wird. Sind die Werte Arrays, werden die Arrays durchsucht |
==== Rückgabewert ==== | ==== Rückgabewert ==== | ||
Line 19: | Line 31: | ||
debug.print inset(2, array(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(2, array(1, 2), 3) ' true | ||
- | debug.print inset(3, array(1, 2), 3) ' true</code> | + | debug.print inset(3, array(1, 2), 3) ' true |
+ | debug.print inset("d", "a,b,c,d,e") ' true</code> | ||
===== Code ===== | ===== Code ===== | ||
- | <code vb udf_inset.bas>Attribute VB_Name = "udf_inSet" | + | <source '%%fpath%%/%%fname%%' vb> |
- | '------------------------------------------------------------------------------- | + | |
- | '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</code> | + |