Вопрос

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

Const OVERFLOWS As Long = 10 * 60 * 60

принимая во внимание, что установка значения напрямую - это нормально:

Const COMPILES_OK As Long = 36000

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

Спасибо

Это было полезно?

Решение

Добавьте long суффикс & по крайней мере, на один номер:

Const OVERFLOWS As Long = 10& * 60 * 60

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

Другие советы

http://support.microsoft.com/kb/191713 это хорошее краткое описание символов объявления типа, доступных в VBA / VB4-6.

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

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

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

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

Символ типа также может быть добавлен к литералам :Const ПЕРЕПОЛНЯЕТСЯ до тех пор, пока = (10& * 60 * 60) (на самом деле одного достаточно из-за того, как движок VBA вычисляет выражение).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top