在VBA中,as this specification显示,数值可以有多种类型:Double,Integer,Long,LongLong,Single,Decimal,Byte。但是,似乎在Excel中,对于包含数值的单元格,其类型始终被视为 Double 。
Excel公式或VBA代码中有多个函数可以检查单元格的数据类型。例如,TypeName Function in VBA,TYPE function in Excel,IS functions in Excel等。但似乎他们可以为数值返回的最好类型是 Double ,其他数字类型(整数,长,字节...)永远无法被检测到。
有人能说出我是对还是错?
答案 0 :(得分:5)
参考 - http://www.cpearson.com/excel/rounding.htm
Excel以不同的方式存储数字,您可以将它们格式化显示在工作表上。在正常情况下,Excel将数值存储为“双精度浮点”数字,或简称为“双精度”。这些是8字节变量,可以精确存储大约15位小数的数字。您可能只在工作表上显示两个小数位,但基础值具有完整的15位小数。
因此,如果你正在从一个单元格中读取一个数字,那么除了Double之外,没有理由使用任何东西。
答案 1 :(得分:4)
VBA的 TypeName 能够正确解释Date
和Boolean
,但正如您所建议的那样,整数和十进制数被视为Double
。
Excel和VBA在某种程度上是两个不同的应用程序(本质上),Excel单元格格式不直接对应于VBA数据类型。
我们需要检查从Excel检索的Value
,并在必要时将这些值转换为适当的数据类型。类似地,当我们将信息传递回Excel时,我们经常需要格式化值,和/或格式化我们插入它们的单元格。