我有以下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 。
答案 0 :(得分:2)
Range.Value property拥有一些区域货币特质;其中一个可能是4位精度(某些区域货币变量类型通用)。
使用Range.Value2 property作为原始双精度值。
GetValue = RefCell.Offset(0, i).Value2
返回的值可能必须手动格式化为货币;任何区域信息都被剥夺了。