0
votes

Traitement des erreurs VBA Si la chaîne introuvable dans la colonne

J'ai un code à la recherche de "modèle" dans une colonne d'Excel mais parfois le travail "modèle" ne sera pas là. Y a-t-il un moyen d'erreur de gérer cela? Fondamentalement, je veux qu'il veuille dire "si le modèle n'est pas là, do xxx" xxx

J'ai une utilisation incorrecte de rien

mise à jour:

J'ai fini par utiliser: xxx

J'ai ajouté dans la recherche de la dernière ligne car Excel était à court de mémoire


2 commentaires

Model_Type_row semble être un type entier. Vous pouvez essayer si modèle_type_row = 0 puis à la place


Essayez d'insérer un point de rupture pour inspecter la valeur de MODER_TYPE_ROW ou Utilisez débogage.print pour afficher la valeur. Je suppose que c'est un type de données qui a une valeur par défaut différente de celle de rien (peut-être "" ou 0 ).


3 Réponses :


0
votes

Vous pouvez le faire:

checking_type = 0
On Error Resume Next
checking_type = ThisWorkbook.Sheets("Sheet where you are looking").Cells.Find("ModelType").Column
On Error GoTo 0
If checking_type <> 0 Then
    'code if column is found
Else
    'code if column not found
End If


0 commentaires

0
votes

Vous pouvez utiliser votre variable booléenne pour atteindre le test: xxx

ou utiliser modèle_type_row <> 0 (puis l'initialise à 0 avant la boucle). < / p>


0 commentaires

2
votes

Votre code prend en charge déjà cela ... Vous avez juste besoin d'une déclaration d'autre à votre si.

if iserror(Columns(1).Find(What:=checking_type, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False))
    'when there is an error, do this
    MsgBox ("NADA")
else
    'do something when the row is found
    Model_Type_Row = Columns(1).Find(What:=checking_type, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Row
End if


5 commentaires

MODÈLE_TYPE_ROW SERA-T-IL Je ne pense pas que vous puissiez le comparer à rien car ce n'est pas un objet.


@Ryanwildry Oui; Je ne vois pas ses déclarations, mais j'espère qu'il a énuméré aussi longtemps ... Je ne faisais que réparer cette ligne lorsque vous avez posté (il avait une pause de ligne après puis , mais pas de fin si


"Si modèle_type_row = 0 alors ..." doit être en dehors de la boucle, sinon la boîte de message apparaît après la première itération


@ lézard6 très vrai; Selon la manière dont OP veut l'utiliser, cela peut être conçu, similaire à FindNext (reflété comment il est apparu dans le poteau). À votre point, Model_type_row = j devrait être réglé sur 0 après la MSGBox (publication modifiée pour supporter cela)


@Cyril très vrai je n'ai pas pensé à ça. Merci!