VBA IsNumeric va WILD

Expliquez pourquoi le code ci-dessous se comporte de façon random

La ligne de code ci-dessous returnne TRUE quand elle devrait returnner FALSE

?Isnumeric("555-")

Aussi

?Isnumeric("555-"/2) returnne TRUE

Expliquez-vous ce comportement random d' IsNumeric ?

Bien qu'il soit un peu ésotérique, le minuscule inférieur est un format numérique valable parfois utilisé dans les packages comptables. Je suppose qu'il n'est pas utilisé tellement aujourd'hui. Il indique un nombre négatif, par exemple, 555- est -555. Votre deuxième exemple fonctionne car -555 (ou 555-) peut être divisé par 2 ie -227.5 (ou 227.5-).

Vous pouvez voir dans l'interface user Excel où elle permet le format en tant que partie du text vers les colonnes:

entrez la description de l'image ici

En outre, vous pouvez configurer un format de nombre pour utiliser négatif:

#,##0;#,##0-

Voir ce blog-post .

De Microsoft :

IsNumeric renvoie True si le type de donnée Expression est Boolean, Byte, Decimal, Double, Integer, Long, SByte, Short, Single, UInteger, ULong ou UShort, ou un Objet qui contient l'un de ces types numériques. Il renvoie également True si Expression est un char ou Ssortingng qui peut être converti avec succès en un nombre.

IsNumeric renvoie False si Expression est du type de données Date ou de type de données Objet et il ne contient pas de type numérique. IsNumeric renvoie False si Expression est un Char ou Ssortingng qui ne peut pas être converti en un nombre.

On dirait qu'il interprète "555-" comme -555. Après avoir vérifié IsNumeric, vous pouvez détecter cette situation comme ceci:

 Cstr(CLng("555-")) = "555-"