.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位小数。 如果input是货币格式而不是数字格式,函数如何返回4位小数? 我想从货币格式的单元格中检索最准确的数字,即$ 0.1111 1而不是$ 0.1111 0

Range.Value属性包含一些区域货币特性。 其中一个可能是4位精度(对于某些区域货币variablestypes通用)。

对原始的double值使用Range.Value2属性 。

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

返回的值可能必须手动格式化为货币; 任何区域信息已被剥夺。