VBA Excel Recherchev - Erreur 13 - “Incompatibilité de Type”
Je suis en train de travailler sur un Excel Macro VBA qui reçoit le courriel d'un client à partir d'une autre feuille.
J'obtiens l'Erreur 13 "Incompatibilité de Type" à partir de la Recherchev:
For Each c In Range("D3:D130").Cells
If c > 500 Then
Dim emailadress As String
Dim client_name As String
Dim lookup_mail As Range
Set lookup_mail = Sheets("MAILS").Range("A1:D130")
client_name = Range("A" & (c.Row)).Value
emailadress = Application.VLookup(client_name, lookup_mail, 4, False)
Si je le fais de cette façon, il fonctionne très bien:
emailadress = Application.VLookup("John Doe", lookup_mail, 4, False)
Donc je suppose qu'il ya quelque chose de mal avec la façon dont je "déclarer?" client_name. Ce qui est étrange, parce que quand je l'ai sortie client_name dans une boîte de Message il s'affiche parfaitement.
(J'utilise VBA dans la mesure où j'ai besoin d'envoyer des courriers électroniques automatiques pour les clients)
Toute aide aprécié!
Un Type 13 erreur à ce point indique généralement que la valeur n'a pas pu être trouvé. Avez-vous de débogage et quelle est la valeur de
La valeur est correcte, j'ai le nom du client, mais la Recherchev pour une raison quelconque ne parvient pas à lire cette valeur...
Ne devrait-elle pas être
Quel est le but de
client_name
au moment de l'erreur? Exécuter Debug.Print char(39) & client_name & chr(39)
juste avant la recherchev et vérifiez la fenêtre pour voir si il y a leading/trailing spaces dans la source et/ou cible.La valeur est correcte, j'ai le nom du client, mais la Recherchev pour une raison quelconque ne parvient pas à lire cette valeur...
Ne devrait-elle pas être
Application.WorksheetFunction.VLookup(...)
? Aussi, si vous avez nommé le Range("A1:D130"), vous pouvez simplement mettre le texte en Recherchev, vous pouvez également effectuer cette plage nommée dynamique de sorte que vous ne vous souciez pas de la taille de la portée des changements.Quel est le but de
If c > 500 Then
? Entendez-vous la valeur de c (c.Value
)?OriginalL'auteur Franco Altuna | 2015-07-30
Vous devez vous connecter pour publier un commentaire.
Ma conjecture est, ce n'est pas votre RECHERCHEV qui est la collecte de l'erreur d'incompatibilité de type, mais de céder sa valeur de retour d'une chaîne de caractères. Votre RECHERCHEV peut-être essayé d'attribuer une valeur d'erreur à une chaîne, et qui donne une incompatibilité de type. Essayez d'utiliser une variante de la place.
Aussi, de déclarer des variables à l'intérieur d'une boucle brûle mes yeux. Merci de ne pas le faire. En va de même pour tout ce que vous pouvez faire en DEHORS de la boucle, comme le réglage de la lookup_mail gamme.
De cette façon, ton code fonctionne, mais votre adresse mail variable peut contenir une erreur. Vérifier que.
EDIT:
Si vous utilisez l'application.worksheetfunction.recherchev, il pourrait fonctionner mieux. Si Recherchev génère une erreur, il donne juste de retour d'une erreur dans VBA, et n'est pas d'essayer de le retourner à une variable.
Passons! Elle fonctionne. Merci!
OriginalL'auteur vacip
Vous pouvez essayer ce, il peut fonctionner si votre plage ou à la valeur provient d'une base de données avec les pauvres de chaîne ou de numéro de mise en forme:
Acclamations,
Pascal
http://multiskillz.tekcities.com
OriginalL'auteur pascalb