Pregunta

Esta declaración provoca 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 persuades a VBA para que trate enteros literales como largos?

Gracias

¿Fue útil?

Solución

Agregue el sufijo long & amp; 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 a long no funcionará, porque VBA no permite asignar el valor de retorno de una función a una constante.

Otros consejos

http://support.microsoft.com/kb/191713 es un buen resumen de los caracteres de declaración de tipo disponibles en VBA / VB4-6.

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

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

entonces podría hacer algo similar para una sola constante

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top