7
votes

VBA constatant si la valeur est en valeurs

J'ai une valeur y code>, et je veux savoir si cette valeur est à l'intérieur de cet ensemble de valeurs: x1, x2, ... xn code>.

Je peux le faire comme ceci: p> xxx pré>

mais y a-t-il une manière plus agréable? Pseudocode: P>

if(y in (x1, x2, ...., xn))

vba

0 commentaires

7 Réponses :


1
votes

Utiliser des tableaux:

dim x(10)

x(1)=....
x(2)=....

y=....

for i=1 to 10
    if x(i)=y then
         ....
    end if
next i


0 commentaires

0
votes
dim lookupValue as long
lookupValue = 21000

dim values
set values = CreateObject("Scripting.Dictionary")

with values
   .Add 1, 1
   .Add 10, 1
   .Add 100, 1
   .Add 1000, 1
   .Add 10000, 1
end with

dim found as Boolean
found = values.Exists(lookupValue)

2 commentaires

Ils recherchent des valeurs dans des variables, pas une chaîne. Si vous vouliez vérifier une chaîne, il serait plus facile d'utiliser Instr


@Bryanh: la valeur que je recherche dans le code ci-dessus est 21000 de la liste de 1, 10, 100, 1000, 10000. Où dois-je comparer des chaînes?



0
votes

Une idée assez facile de vérifier si la valeur existe est d'utiliser la fonction correspondant Fonction: xxx

Le seul problème est que si la valeur n'existe pas le match La fonction renvoie une erreur. Par conséquent, vous devez utiliser la technique de manipulation des erreurs.

qui pourrait ressembler à une valeur non existante '70': xxx

Malheureusement, cela ne fonctionnera que dans Excel .


0 commentaires

4
votes

Vous pouvez écrire une fonction d'assistant comme celle-ci:

Dim Found As Boolean

Found = FindValue(y, x1, x2, x3, xn)


0 commentaires

1
votes

Encore une autre manière forte>

Avez-vous accès à MS-Access 2000+? Si oui, ajoutez la référence de la bibliothèque d'objets d'accès et vous pourrez utiliser une fonction EVAL: P>

result = Eval("'y' IN ('x1', 'x2', '...' 'xn')")


0 commentaires

3
votes

Vous pouvez utiliser un cas de sélection de la même manière (si d'autre): xxx


0 commentaires

0
votes

Choisissez un délimiteur qui n'existe pas dans aucune des valeurs (par exemple tuyau "|") et vous pouvez le faire une ligne:

If "|x1|x2|...|xn|" Like "*|" & y & "|*" Then


1 commentaires

x1, x2, x3, etc ressemble à des variables, vous aurez donc des ajoutez-les à la chaîne comme "|" + x1 + "|" + x2 etc.