您可以将 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
。
根据 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
。