J'ai une valeur Je peux le faire comme ceci: p> mais y a-t-il une manière plus agréable? Pseudocode: P> y code>, et je veux savoir si cette valeur est à l'intérieur de cet ensemble de valeurs: x1, x2, ... xn code>. if(y in (x1, x2, ...., xn))
7 Réponses :
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
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)
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?
Une idée assez facile de vérifier si la valeur existe est d'utiliser la fonction 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. P> qui pourrait ressembler à une valeur non existante '70': p> Malheureusement, cela ne fonctionnera que dans Excel . p> p> correspondant code> Fonction:
Vous pouvez écrire une fonction d'assistant comme celle-ci:
Dim Found As Boolean Found = FindValue(y, x1, x2, x3, xn)
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')")
Vous pouvez utiliser un cas de sélection de la même manière (si d'autre):
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
x1, x2, x3, etc ressemble à des variables, vous aurez donc des ajoutez-les à la chaîne comme "|" + x1 + "|" + x2 code> etc.