2016-01-29 2 views
0

У меня есть ошибка я не понимаю, почемуVBA: Переполнение ошибка

У меня есть функция я не трогал (без ошибок), и теперь он не работает ... Моя функция имеет только на линия

Я попробовал функцию CDbl() и использовать двойной тип переменной

я получаю ошибку переполнения

Number = +1341,0937961001

NBD ecimal = 2

Function Truncate(Number As Double, NbDecimal As Integer) As Double 
    Truncate = Int(Number * 10^NbDecimal)/(10^NbDecimal) 
End Function 'Error here : Overflow 

Мне нужна помощь

+1

Я попытался запустить это со значениями, которые вы предоставили, и это работает. Итак, можете ли вы предоставить код, который вы используете для его запуска? – 99moorem

+0

Я тоже не могу воспроизвести ошибку, используя код и значения в вашем сообщении. –

+0

Извините, проблема не в этой функции, а в следующем. Я разрешаю проблему – Shimo

ответ

1

Это будет переполнение, когда номер * 10^nbDecimal превышает 32767 потому что то наибольшее количество VBA будет хранить в виде целого числа.

На самом деле я не прав: это только переполнение, если вы используете CInt(), а не Int()

+0

Я не могу воспроизвести это, используя его код. С его кодом и его значениями, 'Number * 10^nbDecimal' = 134109.37961001, и код работает без ошибок. Я ожидал бы проблемы, если nbDecimal> 32767 (Excel 2016) –

+0

См. Мой отредактированный ответ! –

0

Чтобы добавить, что Чарльз Уильямс говорил, вы можете изменить тип данных Long.