2016-08-27 5 views
3

У меня есть следующие функции VBA для извлечения значения валюты из где-то с той же колонке, но в другой строке:.Value возвращает только 4 дробную часть значения в формате валюты

Function GetValue(RefCell As Range) As Double 

    Dim i As Integer 

    i = Application.Caller.Column - RefCell.Column 

    Obtain = RefCell.Offset(0, i).Value 

End Function 

А вот установка :

Column1 | Column2 
Test 1 | 0.11111 
Test 2 | $0.11111 

Использование GetValue (Test1) дало мне $ 0.11111 со всеми 5 знаками после запятой. Однако GetValue (Test2) дает $ 0.11110 только с первыми четырьмя запятыми. Почему функция возвращает только 4 десятичных разряда, если входной сигнал находится в формате «Валюта», а не в формате «Число»? Я хочу получить наиболее точное число со всеми десятичными знаками из ячеек с форматом валюты - то есть $ 0.1111 в отличие от $ 0.1111 .

+0

Вы слишком сильно отредактировали свой код. Не должно быть 'GetValue = RefCell.Offset (0, i) .Value'? – Jeeped

ответ

1

Range.Value property обладает некоторыми региональными валютными особенностями; одна из них может быть четырехзначной точностью (общей для некоторых типов переменных региональной валюты).

Используйте Range.Value2 property для необработанного двойного значения.

GetValue = RefCell.Offset(0, i).Value2 

Возвращаемое значение может быть отформатировано вручную в виде валюты; любая региональная информация была лишена.

Смежные вопросы