.Value возвращает только 4 десятичных знака значения в формате валюты
У меня есть следующая функция VBA для получения значения валюты откуда-то еще с тем же столбцом, но с другой строкой:
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 десятичными числами. Почему же функция возвращает только 4 десятичных знака, если ввод осуществляется в формате валюты, а не в формате числа? Я хочу получить наиболее точное число со всеми десятичными разрядами из ячеек с форматом валюты - то есть $0,11111, а не 0,11110.
1 ответ
Свойство Range.Value содержит некоторые особенности региональной валюты; одна из них может иметь точность до 4 цифр (обычно для некоторых типов переменных региональной валюты).
Используйте свойство Range.Value2 для необработанного двойного значения.
GetValue = RefCell.Offset(0, i).Value2
Возвращаемое значение может быть вручную отформатировано как валюта; любая региональная информация была удалена.