Из справки об ошибке переполнения в VBA есть следующие примеры:
Dim x As Long
x = 2000 * 365 ' gives an error
Dim x As Long
x = CLng(2000) * 365 ' fine
Я бы подумал, что, поскольку предполагается, что тип данных Long может содержать 32-разрядные числа, первый пример будет работать нормально.
Я спрашиваю это, потому что у меня есть такой код:
Dim Price as Long
Price = CLng(AnnualCost * Months / 12)
, и это вызывает ошибку переполнения, когда AnnualCost равно 5000, а Months равно 12.
Чего мне не хватает?