Переполнение при расчете const в VBA - PullRequest
10 голосов
/ 04 ноября 2008

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

Const OVERFLOWS As Long = 10 * 60 * 60

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

Const COMPILES_OK As Long = 36000

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

Спасибо

Ответы [ 4 ]

14 голосов
/ 04 ноября 2008

Добавьте суффикс long & хотя бы к одному номеру:

Const OVERFLOWS As Long = 10& * 60 * 60

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

4 голосов
/ 04 ноября 2008

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

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

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

Const OVERFLOWS As Single = CSNG(10) * 60 * 60
4 голосов
/ 04 ноября 2008

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

3 голосов
/ 04 ноября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...