2010-07-29 3 views
0

Dans le codage des macros, je vérifie que la condition est différente. Les valeurs sont en décimal ou en nombre entier, Maintenant, je compare les deux valeurs en valeurs décimales, mais pas le bon résultat. S'il vous plaît me guider quelle est la chose devrait être ajouté pour obtenir des résultats corrigés?Problème avec les macros vba Le code n'est pas égal à la vérification des valeurs décimales

Mon code est:

If fld4 <> fldval Then 
    MsgBox "....." 
End If 

Mais la sortie du message indiquant les valeurs suivantes: (!)

fld4 = 0.25, fldval = 0.26 
fld4 = 0.25, fldval = 0.25 
fld4 = 0.14, fldval = 0.14 
fld4 = 0.11, fldval = 0.11 

Répondre

2

Ne jamais comparer les valeurs à virgule flottante directement. Mieux vaut essayer quelque chose comme ceci:

eps = =.00001 'choose an appropriate epsilon 
If Abs(fld4- fldval)<eps Then 
    '... 

Look here pour plus d'informations.

+0

Merci beaucoup. Je viens d'utiliser Abs et j'ai obtenu un résultat correct. Maintenant mon code est Si Abs (fld4) <> Abs (fldval) Puis Est-il suffisant ou quoi que ce soit d'être ajouté? – Karthik

+1

Si Abs utilisé la façon dont vous montrez vous donne une réponse, cela suggère que vous pouvez avoir des nombres négatifs: http://en.wikipedia.org/wiki/Absolute_value Ce n'est pas du tout ce que montre Doc Brown. En fonction de ce que les données désignent, vous pouvez trouver des combinaisons Round (nn.nn, nn). – Fionnuala

+1

@Karthik: l'utilisation de Abs (fld4) <> Abs (fldval) ne fonctionnera normalement pas, c'est-à-dire une expression qui compare encore deux valeurs à virgule flottante - NE FAITES PAS CECI !!! Vous devriez vraiment essayer comme je l'ai écrit dans ma réponse, et investir un peu de temps pour lire l'article que je vous ai donné un lien vers. –

Questions connexes