Вы можете попробовать использовать функцию Round в VBA, например:
!calc = Round(value, 2)
Замените 2 на любое количество десятичных разрядов, которое вы хотите.
В зависимости от масштаба и точности ваших чисел, вы все равно можете столкнуться с ошибкой 3759, если Round возвращает значение, которое не может быть точно выражено как двойное число с плавающей запятой (и в результате получается больше десятичных разрядов, чем вы просили) , Более надежный подход мог бы использовать что-то вроде:
!calc = CDec(FormatNumber(value, 2))
Замените 2 на любое количество десятичных разрядов, которое вы хотите.
FormatNumber округляет число и преобразует его в строку (с указанным вами числом только десятичных разрядов), а CDec преобразует строку в десятичное число.