vba const overflow

vba - sha256 excel



Desbordamiento al calcular una const en VBA (4)

Esta declaración causa un desbordamiento en VBA:

Const OVERFLOWS As Long = 10 * 60 * 60

mientras que establecer el valor directamente está bien:

Const COMPILES_OK As Long = 36000

¿Cómo persuadir a VBA para tratar enteros literales como largos?

Gracias


El carácter tipo también se puede agregar a los literales: Const OVERFLOWS As Long = (10 y * 60 * 60) (uno es suficiente en realidad debido a la forma en que el motor VBA evalúa la expresión).


Agregue el sufijo long & a al menos un número:

Const OVERFLOWS As Long = 10& * 60 * 60

Tenga en cuenta que usar la función CLNG para convertir los valores en long no funcionará, porque VBA no permite asignar el valor de retorno de una función a una constante.


Para aquellos que encuentran & el símbolo un poco esotérico, una alternativa es usar la función CLNG que convierte un número a largo

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

entonces podrías hacer algo similar para una constante simple

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