VBA Trouver (LookAt=xlWhole) renverra toujours une erreur
J'ai une fonction de recherche dans un code VBA qui effectue des recherches sur la colonne A. la Colonne A est rempli avec les acronymes et les lignes correspondantes dans la Colonne B sont la signification de cet acronyme.
J'ai un formulaire utilisateur de configuration que l'utilisateur peut entrer un acronyme et si c'est dans le fichier, il affiche une boîte de message pour dire ce que l'acronyme signifie.
Je suis en train de rechercher une correspondance exacte de l'acronyme de l'utilisateur saisit, par l'intermédiaire de cette ligne:
Range("A:A").Find(acro, LookAt = xlWhole).Select
Cependant, quand je le lance, même si je copie une cellule contenant un acronyme et le coller dans le formulaire utilisateur de la zone de texte, il agira comme s'il ne pouvait pas le trouver et suit mon Erreur Sur la poignée.
Qu'ai-je fait de mal qui l'a rendu incapable de trouver le sigle de la chaîne, je suis à la recherche d'?
Merci!
- Si vous exécutez ce code dans le formulaire utilisateur, il n'est probablement pas en regardant dans la plage appropriée. Essayez de spécifier la feuille de manière explicite:
Sheet1.Range("A:A").Find(acro, xlWhole).Select
Vous devez vous connecter pour publier un commentaire.
@nwhaught déjà répondu et a souligné le réel problème, mais pour ajouter quelque chose de trop grand pour un commentaire:
Il est préférable de ne pas la chaîne de Sélectionner/Activer directement à Trouver():
...depuis que requiert la gestion d'erreur lorsque l'élément n'est pas trouvé (et comme vous l'avez découvert qui peut masquer d'autres problèmes avec votre code)
Essayer quelque chose comme ceci à la place:
La
Is Nothing
test permet d'éviter l'utilisation d'erreur de manipulation.Votre
On Error
de la poignée est de masquer la véritable cause de l'erreur.Code doit être
Range("A:A").Find(What:=acro, LookAt:= xlWhole).Select
Lors du débogage, il est préférable de désactiver la gestion d'erreur, comme le point de l'ensemble du traitement de l'erreur, c'est le masque de son effet à l'utilisateur. (ce qui rend le débogage presque impossible)