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个数字)。