您可以将 LongLong 存储在 Variant 中吗?

Can you store a LongLong in a Variant?

根据 this article 中的 table,Variant 类型不支持 VARENUM.VT_I8 - 这映射到 VBA 的 VbVarType.vbLongLong。这向我表明 Variant 不能容纳 LongLong - 但是 LongLong 仅与 Double 或 Currency 一样宽 - 这些可以存储在 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 可能已转换为双精度数,因此我将 ^ 规范添加到分配给 myLongLong.[=25 的数字中=]

这是我最初发布的代码的输出,其中包含 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