.Value只返回货币格式值的4位小数

时间:2016-08-27 04:57:35

标签: excel vba excel-vba currency regional-settings

我有以下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)仅产生前4个小数,产生0.11110美元。为什么如果输入是货币格式而不是数字格式,函数只返回4位小数?我想从货币格式的单元格中检索所有小数位的最准确数字 - 即$ 0.1111 1 ,而不是$ 0.1111 0

1 个答案:

答案 0 :(得分:2)

Range.Value property拥有一些区域货币特质;其中一个可能是4位精度(某些区域货币变量类型通用)。

使用Range.Value2 property作为原始双精度值。

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

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