5

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

Excel公式或VBA代码中有几个函数可以检查单元格的数据类型。例如, VBA中的 TypeName 函数、Excel 中的TYPE 函数、Excel中的IS 函数等。但似乎它们可以为数值返回的最佳类型是Double,其他数值类型(整数、长整数、字节......)永远无法被发现。

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

4

2 回答 2

7

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

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

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

于 2013-07-17T02:24:29.217 回答
6

VBA 的TypeName能够正确解释DateBoolean但正如您所建议的,整数和十进制数被视为Double.

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

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

于 2013-07-16T21:05:04.470 回答