Je possède ce programme; qui analyse les valeurs d'un système distant. Parfois, il peut arriver à expiration si le réseau est en panne et il va mettre en erreur #nan ou quelque chose de similaire.Supprimer le contenu de la cellule, IFIsNumeric = Alors Faux
Lorsque je tente et d'écrire ce message d'erreur à une base de données; il se trompe pour un "Data Type Mismatch" puisqu'il cherche une valeur numérique.
Pour contourner cela, je décidé d'essayer de nettoyer les résultats. J'ai donc ce code ci-dessous. Cela fonctionne la plupart du temps; Ce que je vois à l'échec, c'est s'il y a un nombre numérique à mi-chemin et ensuite il recommence. Une fois arrivé au numéro numérique, il semble qu'il arrête la boucle et ne nettoie rien d'autre.
Chaque fois que quelqu'un d'aide peut me donner serait génial; et peut-être que je fais cela d'une mauvaise façon. J'ai essayé de donner des exemples de ce que j'essaie de voir ci-dessous. S'il vous plaît laissez-moi savoir si vous avez des suggestions ou des questions.
Private Sub Clean()
'Select Current Row For where to start cleaning. LoopIndex is a global variable.
'Just giving the line of where to read from so I do not need to read the whole sheet.
Range("B" & LoopIndex).Select
'Start the loop, to go through the entire row.
Do Until IsEmpty(ActiveCell)
'Checks if it is a number value; if it is not it will clear out the data.
If IsNumeric(ActiveCell.Value) = False Then
ActiveCell.Value = ""
End If
ActiveCell.Offset(0, 1).Select
Loop
End Sub
À quoi il ressemble.
|A |B |C |D |
|#error|#Error|3 |#Error|
Ce que je veux qu'il ressemble.
|A |B |C |D |
| | |3 | |
Ce qu'il fait.
|A |B |C |D |
| | |3 |#Error|
Où avez-vous 'LoopIndex'? Aussi, il est préférable de [éviter d'utiliser '.Select' /' .Activate'] (https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros). – BruceWayne
C'est une variable globale que je lui ai assignée. Je l'ai eu dans la section des commentaires. – user2644176
@ user2644176 Je serais prudent en utilisant faire jusqu'à boucles. IMO il est beaucoup plus sûr de spécifier la gamme que vous voulez nettoyer et simplement faire une boucle à travers les cellules pour les nettoyer. Votre gamme est-elle variable? Y at-il une raison pour laquelle ma réponse ne fonctionnera pas pour vous? Faites le moi savoir et je vais vous aider à le faire fonctionner. Quant à savoir pourquoi le vôtre n'est pas, je voudrais essayer quelque chose en plus de 'IsEmpty' - Peut vouloir utiliser' ActiveCell = "" 'à la place. En outre, il semblait fonctionner correctement sur ma machine (bien que pour une seule ligne). – user1274820