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" J'ai une utilisation incorrecte de rien p> mise à jour: p> J'ai fini par utiliser: p> J'ai ajouté dans la recherche de la dernière ligne car Excel était à court de mémoire p> p>
3 Réponses :
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
Vous pouvez utiliser votre variable booléenne pour atteindre le test: ou utiliser modèle_type_row <> 0 code> (puis l'initialise à 0 avant la boucle). < / p> p>
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
MODÈLE_TYPE_ROW CODE> 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 code>, 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 CODE> (reflété comment il est apparu dans le poteau). À votre point, Model_type_row = j code> devrait être réglé sur 0 code> après la MSGBox (publication modifiée pour supporter cela)
@Cyril très vrai je n'ai pas pensé à ça. Merci!
Model_Type_row code> semble être un type entier. Vous pouvez essayersi modèle_type_row = 0 puis code> à la placeEssayez d'insérer un point de rupture pour inspecter la valeur de
MODER_TYPE_ROW CODE> ou Utilisezdébogage.print code> 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 derien code> (peut-être"" code> ou0 code>).