Excel VBA意外截断

所以我花了一天的时间debugging我的VBA类模块,并出现了一个令人担忧的现象。

在主电子表格中,我有一个格式为“货币”的单元格,精度为9位小数。 在我的VBA类中,我有一个属性(一个double),它在实例化时接受这个单元格的值。 即

myClass.loanDefault_7 = Range("loanDefaults")(1,7) 

但是,当我检查分配后存储在myClass.loanDefault_7中的值时,它只有4位小数精度。

我的问题是为什么VBA自动(没有我的许可)截断这个值? 我想明白为什么会发生这种情况,以及我将来如何防止这种情况发生。

任何帮助深表感谢!

尝试使用Value2属性:

 myClass.loadDefault_7 = Range("loadDefaults")(1,7).Value2 

来自MSDN:

此属性和Value属性之间的唯一区别是Value2属性不使用货币和date数据types。 您可以使用Double数据types将使用这些数据types格式化的值作为浮点数返回。

看起来Value属性会自动将值强制转换为Currency数据types(AFAIK只能在小数点右边表示4个数字)。