VB6和VB7的Longptr数据类型

时间:2018-06-06 18:06:02

标签: excel excel-vba vba

我面临的问题是,我想分发一个Excel VBA模板。几乎在所有程序中,我都分配了LONG数据类型。但是,我发现对于VBA7或2010及更高版本,我们可以使用LongPtr数据类型进行分配。这将绕过版本问题。是否是64位或32位的MS办公室。

但是我的伙伴指出我不能将LongPtr用于VB6或2010年的办公室。

所以我试图使用它来使其更适用于任何办公室版本

#If VBA7 Then
    Dim X As LongPtr
#Else
    Dim X As Long
#End If

我应该使用上述声明吗?它会导致错误吗?根据我的朋友,它会导致。他还补充说,编译器将绕过if语句。

我没有系统来测试它。

我目前的系统是,

  

Windows 10 64位

     

MS Office 2016 32位

请建议我,我错过了这个概念。为什么我不能在程序中使用上述声明?

谢谢。

1 个答案:

答案 0 :(得分:1)

#If VBA7 Then
    Dim X As LongPtr
#Else
    Dim X As Long
#End If
     

我应该使用上述声明吗?它会导致错误吗?

是的,您应该使用上述声明,即使在古老版本的Office中也不会导致错误。

但是,您应该了解何时以及为何需要使用LongPtr代替Long开始。
Long存在于所有版本中,并且在所有版本中都表示相同的内容(32位整数)。您不应该为了它而将其更改为LongPtr。您只应将LongPtr用于指针或指针大小的数据类型。