VBA中Long和Object数据类型的区别

时间:2013-05-31 04:48:05

标签: vba variables

在VBA中,Long和Object数据类型都是4字节,这是内存地址的大小。这是否意味着,从技术上讲,对象数据类型不执行Long无法执行的任何操作?如果是,那么可以安全地说Object数据类型的存在只是为了让程序员更容易区分变量的用途吗?

当我考虑Win32 API函数声明时,出现了这个问题。它们经常被声明为Long,除非我弄错了,否则它们的返回值只是一个内存地址。似乎将这些函数定义为Object会更合适。

我完全不喜欢?提前谢谢。

1 个答案:

答案 0 :(得分:2)

基于VBA / MSDN帮助:

  

长(长整数)变量存储为带符号的32位(4字节)   数字的范围从-2,147,483,648到2,147,483,647。

和另一个定义:

  

对象变量存储为引用的32位(4字节)地址   对象。使用Set语句,声明为Object的变量可以   有任何对象引用分配给它。

从实际的角度来看,它们都是不同的,并且在不同的情况下使用。哪些是必不可少的:长>>是指数字对象>>指对象

查看以下VBA代码(对于Excel),其中我添加了允许但不允许的注释:

Sub test_variables()

    Dim A As Object
    Dim B As Long

    'both below are not allowed, throwing exceptions
    'A = 1000
    'Set B = ActiveSheet

    'both are appropriate
    Set A = ActiveSheet
    B = 1000
End Sub

最后,就API而言,最好保留原始声明,而不是操纵它以避免API函数意外行为的任何风险。