我面临的问题是,我想分发一个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位
请建议我,我错过了这个概念。为什么我不能在程序中使用上述声明?
谢谢。
答案 0 :(得分:1)
#If VBA7 Then Dim X As LongPtr #Else Dim X As Long #End If
我应该使用上述声明吗?它会导致错误吗?
是的,您应该使用上述声明,即使在古老版本的Office中也不会导致错误。
但是,您应该了解何时以及为何需要使用LongPtr
代替Long
开始。
Long
存在于所有版本中,并且在所有版本中都表示相同的内容(32位整数)。您不应该为了它而将其更改为LongPtr
。您只应将LongPtr
用于指针或指针大小的数据类型。