À l'aide d'une plage nommée dans la fonction VBA pour RECHERCHEV
J'ai le suivant sur ma feuille de calcul:
- Une cellule d'une monnaie [en
A1
] - Une plage de cellules (deux colonnes, l'une pour la monnaie, et l'autre pour un correspondant pourcentage de commission) [défini comme/named/
RANGE
, et l'étendue de la feuille de calcul] - Une cellule [tente] pour déterminer le calcul de pourcentage de commission basée sur
A1
etRANGE
J'ai ensuite une fonction VBA appelé Calculate
, comme suit:
Function Calculate(LookupValue As Double, LookupRange As Range) As Double
Calculate = [VLOOKUP(LookupValue, LookupRange, 2)]
End Function
La cellule qui détermine le pourcentage est le suivant:
=Calculate(A1, RANGE)
Problème, c'est que la cellule ne renvoie #VALUE!
...
Une idée de ce que je pourrais faire de mal?
J'ai essayé plusieurs choses comme le type-hinting à Range()
, en passant LookupRange.Value2
à VLOOKUP
, etc, aucun n'a fonctionné.
J'ai aussi essayé de déboguer, notant que LookupRange
ne contiennent en réalité l'autonomie requise en Value2
, qui est pourquoi j'ai essayé de le passer à la fonction.
Note de côté: La fonction et de la disposition mentionnée ci-dessus est juste un mannequin - la fonction réelle est un peu plus complexe car elle repose sur des tarifs négociés, mensuel des marges, etc. C'est pourquoi je suis à l'aide de VBA en premier lieu. Je sais que je suis en train de faire quelque chose de mal avec la recherche, comme c'est la seule chose qui semble être à défaut au sein de la fonction - tout le reste correspond et calcule.
- se débarrasser de la
[]
qui renvoie un objet range. Il n'y a pas de plage appelée quelle que soit votre recherche retourne. Vous souhaitez retourner la valeur:Calculate =
Application.WorksheetFunction.RECHERCHEV(LookupValue, LookupRange, 2)`
Vous devez vous connecter pour publier un commentaire.
De MSDN:
en d'autres termes, vous peut utilisation
mais vous ne peut pas utilisation
Ce que vous pouvez faire est:
Option 1:
ou mieux:
Cependant, je suggère:
Option 2:
J'espère que vous savez au sujet de la signification de 4ème paramètre:
Btw,
Calculate
n'est pas bon nom pour l'UDF, depuis VBA déjà a la fonctionApplication.Calculate
. J'avais le renommer pour éviter toute confusion.#VALUE
, mais j'ai peut-être manqué quelque chose... de toute façon, il fonctionne maintenant. (Je suis un VBA débutant à essayer de trouver quelque chose pour un client très apprécié.) 🙂