代码之家  ›  专栏  ›  技术社区  ›  Greedo

你能用一种变体来储存LongLong吗?

  •  1
  • Greedo  · 技术社区  · 5 年前

    this article VARENUM.VT_I8 -这映射到VBA的 VbVarType.vbLongLong . 这对我来说意味着一个变体不能容纳LongLong,但是LongLong的宽度只有一个Double或Currency那么宽,而且这些都可以存储在Variant fine中,所以我看不出LongLong不能保存LongLong的原因,我想知道这篇文章是否已经过时。

    无论如何,我没有64位的Excel,所以有人可以帮我检查一下-如果不支持,那么有什么想法吗?

    0 回复  |  直到 5 年前
        1
  •  2
  •   jcrizk    5 年前

    基于 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
    

    enter image description here

    编辑:

    Greedo myLongLong 可能被铸造成了双倍,所以我加了 ^ 指定给我的号码 .

    美龙

    enter image description here

    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
    

    以下是屏幕截图中的代码输出:

    enter image description here

    看起来像 变体 支持 LongLong .