2010-10-15 10 views
0

J'ai quelques difficultés à trouver un numéro dont la longueur est égale ou supérieure à 9 chiffres.Problème avec la fonction de recherche par rapport aux fichiers CSV

Je l'ai écrit et si le nombre est inférieur à 9, il le ramasse sinon il ne le fait pas.

Les chiffres sont dans un format comme cette 1013617518

Sub LoopThroughDirectory() 

Application.DisplayAlerts = False 
Dim Ifind As String, rngData As Range 
Dim rngFound As Range 
Dim r As Long 

MyPath = "C:/" 
activefile = Dir(MyPath & "*.csv") 
r = 1 

Start: 
If Range("A" & r) = "" Then 
Exit Sub 
End If 

Application.ScreenUpdating = False 

Do While activefile <> "" 
    Ifind = Range("A" & r).Value 
    Workbooks.Open Filename:=MyPath & activefile 
    Set rngData = ActiveSheet.Range("B:B") 
    Set rngFound = rngData.Find(Ifind, LookIn:=xlValues) 

    ActiveWorkbook.Close 

    If Not rngFound Is Nothing Then 
      Range("B" & r) = activefile 
      r = r + 1 
      GoTo Start 
    Else: Range("B" & r) = "Not Found" 
    End If 

    activefile = Dir() 
    Range("A" & r).Select 
Loop 

Application.ScreenUpdating = True 

r = r + 1 
activefile = Dir(MyPath & "*.csv") 
GoTo Start 

Application.Display Alerts = True 

End Sub 

Toutes les idées pourquoi il isnt les ramasser et pickign des numéros plus courts seraient grands

+0

ont vous avez utilisé le débogueur pour parcourir le code? – bugtussle

+0

Supprimer Application.DisplayAlerts = False et voir s'il existe un message masqué –

+0

aucune erreur ne s'affiche. ce qui se passe est si le nombre qu'il cherche est inférieur à 9 chiffres donc 1029282 alors il le trouvera (s'il est dans le filse) mais il est plus grand que 9 même quand il est dans le fichier il dit non trouvé –

Répondre

1

Changer votre déclaration de découverte à

Set rngFound = rngData.Find(Ifind, LookIn:=xlFormulas) 

comme les nombres au-dessus de 9 chiffres sont généralement affichés en notation xEy sauf si vous prenez des précautions supplémentaires. Ceci est sûr ici car vous importez un CSV qui ne contient pas de "vraies" formules.

indice: Avez-vous simulé votre recherche à la main (c.-à-d. Ctrl-F) avant le codage? Il ne fonctionne pas non plus, lorsque le CSV est correctement divisé en lignes et que vous allez chercher votre numéro à 10 chiffres « par la valeur », mais il fonctionne « par la formule »

Bonne chance MikeD