Excel中单元格的数值types是否总是被视为DOUBLE?

在VBA中, 如本规范所示,数值可以有几种types:Double,Integer,Long,LongLong,Single,Decimal,Byte。 但是,在Excel中,对于包含数值的单元格,其types始终被视为Double

Excel公式或VBA代码中有几个函数,可以检查单元格的数据types。 例如, VBA中的TypeName 函数,Excel中的TYPE函数,Excel中的IS函数等等。但是似乎他们可以返回一个数值的最好types是Double ,其他数字types(Integer,Long,Byte …)永远不能被检测到。

谁能告诉我,如果我是对/错?

参考 – http://www.cpearson.com/excel/rounding.htm

Excel存储数字的方式不同,您可能会将其格式化显示在工作表上。 在正常情况下,Excel将数值存储为“双精度浮点”数字,或简称为“双精度”。 这些是8字节的variables,可以将数字精确保存到大约15个小数位。 您可能只有两个小数位显示在工作表上,但基础值有完整的15个小数位。

因此,如果您正在从单元格中读取数字,那么除了Double以外,没有任何理由使用它。

VBA的TypeName正确地能够解释DateBoolean但是,正如你所build议的那样,整数和十进制数被视为Double

Excel和VBA在某种程度上是两个不同的应用程序(本质上)和Excel单元格格式不直接对应于VBA数据types。

我们需要检查从Excel中检索的值,并在必要时将这些值转换为适当的数据types。 同样,当我们将信息传递回Excel时,我们经常需要格式化值,和/或格式化我们插入到的单元格。