Vous pourriez écrire une fonction d'aide comme celle-ci:
PublicFunction FindValue(ByVal ValueToFind AsVariant,ParamArray SearchIn()AsVariant)Dim i AsIntegerFor i =0To UBound(SearchIn)If SearchIn(i)= ValueToFind Then
FindValue =TrueExitFunctionEndIfNextEndFunction
Le deuxième paramètre (le ParamArray) est un tableau, de sorte que vous pouvez passer à un nombre indéterminé de paramètres.
De sorte que vous pouvez passer toutes vos valeurs de cette fonction - celle que vous souhaitez trouver en premier, et après que toutes celles que vous souhaitez rechercher dans:
Dim Found AsBoolean
Found = FindValue(y, x1, x2, x3, xn)
dim values asstring
values ="1,2,3,4,5,"'Note that comma is a separator and added towards the end as well.dim lookupValue asstring
lookupValue =",4,"dim found asBoolean
found =(instr(1, values, lookupValue)<>0)if found thenendif
EDIT: une Autre façon
dim lookupValue aslong
lookupValue =21000dim values
set values = CreateObject("Scripting.Dictionary")with values
.Add 1,1.Add 10,1.Add 100,1.Add 1000,1.Add 10000,1endwithdim found asBoolean
found = values.Exists(lookupValue)
Très facile à l'idée de vérifier si la valeur existe, c'est d'utiliser Match fonction:
Dim myTBL AsVariant
myTBL = Array(20,30,40,50,60)'if value '30' exists in array than the position (which is >0) will be returned
Debug.Print WorksheetFunction.Match(30, myTBL,0)
Le seul problème est que si la valeur n'existe pas, le Match de la fonction renvoie une erreur. Par conséquent, vous devez utiliser d'erreur de manipulation technique.
Qui pourrait ressembler à de la non valeur existante '70':
'if doesn't exists error would be returnedOnErrorResumeNext
Debug.Print WorksheetFunction.Match(70, myTBL,0)If Err.Number <>0Then
Debug.Print "not exists"
Err.Clear
EndIf
Malheureusement, cela ne fonctionne que dans Excel.
Vous pourriez écrire une fonction d'aide comme celle-ci:
Le deuxième paramètre (le
ParamArray
) est un tableau, de sorte que vous pouvez passer à un nombre indéterminé de paramètres.De sorte que vous pouvez passer toutes vos valeurs de cette fonction - celle que vous souhaitez trouver en premier, et après que toutes celles que vous souhaitez rechercher dans:
OriginalL'auteur Christian Specht
Vous pouvez utiliser Select case de la même manière (if then else):
OriginalL'auteur Yoram Ariel
Utiliser des tableaux:
OriginalL'auteur Paolo
EDIT: une Autre façon
OriginalL'auteur shahkalpesh
Très facile à l'idée de vérifier si la valeur existe, c'est d'utiliser
Match
fonction:Le seul problème est que si la valeur n'existe pas, le Match de la fonction renvoie une erreur. Par conséquent, vous devez utiliser d'erreur de manipulation technique.
Qui pourrait ressembler à de la non valeur existante '70':
Malheureusement, cela ne fonctionne que dans Excel.
OriginalL'auteur Kazimierz Jawor
Encore une autre façon
Avez-vous accès à MS-Access 2000+?
Si oui, ajouter l'Accès à des Objets de référence de la bibliothèque et vous pourrez utiliser la fonction Eval:
Il évalue les expressions de chaîne. Certains opérateurs SQL comme le
IN
peut être utilisé.Voir la documentation
OriginalL'auteur Mike
Choisir un délimiteur qui ne existent pas dans les valeurs (par ex. le pipe "|") et vous pouvez le faire en une seule ligne:
OriginalL'auteur Michael