Переполнение при вычислении константы в VBA

Это объявление вызывает переполнение в VBA:

Const OVERFLOWS As Long = 10 * 60 * 60

тогда как установка значения прямое:

Const COMPILES_OK As Long = 36000

Как вы убеждаете VBA обрабатывать литеральные целые числа как longs?

Спасибо

Ответ 1

Добавьте суффикс long & как минимум к одному числу:

Const OVERFLOWS As Long = 10& * 60 * 60

Обратите внимание, что использование функции CLNG для преобразования значений в long не будет работать, поскольку VBA не позволяет назначить возвращаемое значение функции константе.

Ответ 3

Для тех, кто находит символ и символ немного эзотерическим, альтернативой является использование функции CLNG, которая преобразует число в long

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

вы могли бы сделать аналогичную вещь для единой константы

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

Ответ 4

Символ типа также может быть добавлен к литералам: Const OVERFLOWS As Long = (10 & * 60 * 60) (один из них является суффиксом на самом деле из-за того, как двигатель VBA оценивает выражение).