【发布时间】:2012-10-13 08:16:44
【问题描述】:
我认为TypeName 函数返回 VBA 中数据的确切类型。现在我正在寻找一个WorksheetFunction,它可以返回一个Integer,而不是Double。
很多WorksheetFunction 在VBA 中返回Double,例如,MsgBox TypeName(Application.WorksheetFunction.RandBetween(1, 2)) 给出Double。奇怪的是,一些应该返回Integer 的函数也会给出Double,例如MsgBox TypeName(Application.WorksheetFunction.Count(Range("A2:A10"))) 和MsgBox TypeName(Application.WorksheetFunction.Fact(3))。
那么有谁知道是否有一个WorksheetFunction 返回一个Double 并且可以让TypeName 检测到它?
【问题讨论】:
-
为什么重要?我怀疑有, Double 是标准的数字返回类型;在 VB 编辑器中按 F2,搜索 WorksheetFunction,您可以看到它们都列出了相应的返回类型。
-
是的 - 逐步完成 - 只有双精度、字符串和布尔值作为工作表函数的返回值 - 不过很有趣
-
如果你有一个结合了几个数学工作表函数的语句,你真的不希望弹出一个 16 位整数来引入隐式转换、舍入或溢出
-
我完全同意@AlexK 的上述帖子。如果你真的想要一个整数,你不能只用
CInt转换它 -> 当然,如果数字小于-32,000,大于32,000,它将失败(32,000 是四舍五入,我忘记了确切的数字了我的头顶) -
未声明/文字整数默认为 VBA 整数(一个糟糕的选择,但旧版支持要求如此)和 integer+integer=integer
标签: vba types excel type-conversion