Question

Cette déclaration provoque un débordement dans VBA:

Const OVERFLOWS As Long = 10 * 60 * 60

alors que définir directement la valeur est correct:

Const COMPILES_OK As Long = 36000

Comment persuadez-vous VBA de traiter les entiers littéraux comme des longs?

Merci

Était-ce utile?

La solution

Ajoutez le suffixe long & amp; à au moins un chiffre:

Const OVERFLOWS As Long = 10& * 60 * 60

Notez que l'utilisation de la fonction CLNG pour convertir les valeurs en long ne fonctionnera pas, car VBA ne permet pas d'affecter la valeur de retour d'une fonction à une constante.

Autres conseils

http://support.microsoft.com/kb/191713 est un bon résumé des caractères de déclaration de type disponibles dans VBA / VB4-6.

Pour ceux qui trouvent le & amp; symbole un bit ésotérique, une alternative consiste à utiliser la fonction CLNG qui convertit un nombre en long

Const OVERFLOWS As Long = CLNG(10) * 60 * 60

vous pouvez alors faire la même chose pour une constante Single

Const OVERFLOWS As Single = CSNG(10) * 60 * 60

Le caractère de type peut également être ajouté aux littéraux: Const OVERFLOWS As Long = (10 & * 60 * 60) (un seul suffit en raison de la façon dont le moteur VBA évalue l'expression).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top