Excel中单元格的数值类型是否始终被视为DOUBLE?

Sof*_*mur 5 excel vba excel-vba

在VBA中,如此规范所示,数值可以有多种类型:Double,Integer,Long,LongLong,Single,Decimal,Byte.但是,似乎在Excel中,对于包含数值的单元格,其类型始终被视为Double.

Excel公式或VBA代码中有多个函数可以检查单元格的数据类型.例如,TypeName函数在VBA,Excel中的TYPE函数,是Excel的功能等,但似乎他们可以返回数值上等类型是,其他数字类型(整型,长整型,字节...)永远无法被发现.

谁能告诉我,我是对还是错?

San*_*osh 7

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

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

因此,如果你从一个单元格中读取一个数字,除了双重之外,没有理由使用任何东西.


And*_*y G 6

VBA的TypeName可以正确解释DateBoolean但是,正如您建议的那样,整数和十进制数被视为Double

在一定程度上,Excel和VBA是两个不同的应用程序(本质上),Excel单元格格式并不直接对应于VBA数据类型。

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