2017-08-10 1 views
2

Plus tôt aujourd'hui, je nettoyais des données, en utilisant la fonction .trim() vba. Bien que cela ait causé. être changé en, et je ne sais pas pourquoi.Excel VBA. Modification de la fonction Trim. à,

Cells(rw, j).Value = Trim(Cells(rw, j).Value) 

Est-ce que je l'ai fait, et cela a changé les valeurs comme suit:

5.2 ->

5,2

On pourrait penser que cela est dû aux paramètres locaux, bien que la même colonne contient des valeurs comme 3 (6.1) qui ne sont pas foiré.

Merci à l'avance

+0

essayez d'utiliser 'Cells (rw, j) .Value = Trim (Cells (rw, j))' – Shrikant

+0

Qu'est-ce que '.NumberFormat' pour cette cellule? – braX

+0

Je parierais que ma maison est les paramètres locaux. La raison pour laquelle '3 (6.1)' conserve un point décimal est que, je suis assez sûr, cette valeur sera interprétée comme une chaîne. – Ambie

Répondre

3

Aller au fichier - Options - Avancé et recherchez Utiliser les séparateurs système. Vous voulez que le séparateur décimal soit. et le séparateur de milliers d'être,

Vous pouvez également modifier ces derniers dans VBA en utilisant le code suivant:

Application.DecimalSeparator = "." 
Application.ThousandsSeparator = "," 
Application.UseSystemSeparators = False 

Comme vous ne voulez pas change ces paramètres, modifiez votre code:

Cells(rw, j).Value = "'" & Trim(Cells(rw, j).Text) 

.Text vous donnera la version de la chaîne de ce qui est dans la cellule plutôt que de tenter de le convertir en un nombre (si elle ressemble à un nombre).

+0

C'est la chose, mon séparateur décimal est une virgule, bien que cette colonne doit être interprétée comme une chaîne. – Iso

+0

Voir la nouvelle mise à jour, il devrait résoudre le problème. –

+0

Erreur toujours valide, même avec la deuxième solution. – Iso

1

Si vous ne voulez pas changer votre système/excel paramètres pour cette une application globale, vous pouvez essayer de forcer la valeur à un texte avec quelque chose comme:

With Cells(rw, j) 
    .NumberFormat = "@" 
    .Value = Trim(Cells(rw, j).Value) 
End With 

Vous pouvez également, en fonction de votre commentaire:

With Cells(rw, j).Value = "'" & Trim(Cells(rw, j).Value) 
+0

Appliqué à NumberFormat à la colonne entière, pas de chance. – Iso

+0

Ajout d'une autre suggestion. –

+0

Toujours pas de chance. Été sur cela pendant 2 heures maintenant et il m'énerve. – Iso

0

Vous pouvez essayer ceci:

Dim temp As String 
temp = Cells(rw, j).Value 
temp = Trim(temp) 
Cells(rw, j).Value = temp 

Malheureusement je ne peux pas tester.