根据this article中的表格,Variant 类型不支持 VARENUM.VT_I8
- 这映射到 VBA 的 VbVarType.vbLongLong
。这对我来说意味着 Variant 不能容纳 LongLong - 然而 LongLong 的宽度仅与 Double 或货币一样宽 - 并且这些可以存储在 Variant 罚款中,所以我认为没有理由 LongLong 不能,并且我想知道那篇文章是否已经过时了。
无论如何,我没有 64 位 Excel,所以有人可以帮我检查一下 - 如果不支持,那么有什么想法吗?
最佳答案
基于this link that braX发布后,我的 64 位 Excel 能够运行以下代码。
Option Explicit
Public Sub ShowThatVariantsCanBeLongLong()
Dim myLongLong As Variant
myLongLong = 9.22337203685478E+18
Sheet1.Cells(1, 1).Value = myLongLong
End Sub
这是我的 Excel 应用程序的性能证明。
编辑:
Greedo评论说 myLongLong
可能已转换为 double 型,因此我将 ^
规范添加到分配给 myLongLong
的数字中。
这是我最初发布的代码的输出,其中包含 myLongLong
的类型名称。
因此看起来 Variant
将默认为 double
类型,但这并不一定能回答问题。
这是我使用的修改后的代码:
Option Explicit
Public Sub ShowThatVariantsCanBeLongLong()
Dim myLongLong As Variant
myLongLong = 9223372036854775807^
Sheet1.Cells(1, 1).Value = myLongLong
Sheet1.Cells(1, 2).Value = TypeName(myLongLong)
End Sub
下面是输出以及屏幕截图中的代码:
看起来Variant
确实支持LongLong
。
关于vba - 可以将 LongLong 存储在变体中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60020919/