1 votes

Find ne trouve pas de correspondance exacte dans une chaîne de caractères dans Excel

J'ai écrit un code en vba dans lequel si j'entre une chaîne de caractères dans la cellule B8 alors il correspondra à l'autre feuille de calcul classé A6:A500 . Mon texte de recherche est Carlos Leather Fashion*Lefties*Alex*Mid Blue . Et il y a une chaîne dans A6 qui est Carlos Leather Fashions*Lefties*Alex*Mid Blue . Donc, il ne correspond pas parce qu'il y a un "s" supplémentaire dans l'abréviation de la mode. Mais mon code vba montre Found dans ce cas aussi. Voici mon code -

Dim helper As String

helper = Cells(8, 2).Value

Dim paymentStatusSheet As Worksheet
Set paymentStatusSheet = Worksheets("Payment-Summary")
'--------------------------------------------------------------Set the Payment status worksheet

If paymentStatusSheet.Range("A6:A500").Find(What:=helper, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then

    MsgBox "Not Found"

Else
    MsgBox "Found"

End If

Aidez-nous !

1voto

Luca Rocchi Points 2665

Le problème se pose pour les raisons suivantes Range.Find() voir l'astérisque * comme caractère générique, qui correspond à n'importe quel caractère. La chaîne de recherche Fashion* correspond donc Fashions*

Une solution rapide consiste à échapper au modèle de recherche. Excel traite ~* dans la chaîne de recherche sous la forme d'un seul caractère astérisque. Par conséquent, une solution rapide à votre cas d'utilisation spécifique serait la suivante :

Dim helper As String

helper = Cells(8, 2).Value
helper = Replace(helper, "*", "~*")  '<-- Note this new line

Dim paymentStatusSheet As Worksheet
Set paymentStatusSheet = Worksheets("Payment-Summary")
'--------------------------------------------------------------Set the Payment status worksheet

If paymentStatusSheet.Range("A6:A500").Find(What:=helper, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then

    MsgBox "Not Found"

Else
    MsgBox "Found"

End If

Ici, je n'ai pas pris en compte les autres caractères de remplacement, c'est à dire ? y ~ . Vous devrez peut-être les échapper si vous les prévoyez dans vos chaînes de recherche.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X