在VBA中启用字典对象

时间:2015-03-12 04:39:48

标签: excel vba excel-vba dictionary

当我在Excel VBA中启动字典对象时,我发现了两种方法:

  1. 使用CreateObject("Scripting.Dictionary")(无“Microsoft Scripting Runtime”);
  2. 首先启用引用“Microsoft Scripting Runtime”,然后使用Dim dict As New Scripting.Dictionary
  3. 它们都可以在我的机器上运行。我想知道这两种方法有什么区别吗?

1 个答案:

答案 0 :(得分:5)

我知道的唯一区别是第一个使用Late bind而第二个使用Early bind。两者之间的差异解释为here

早期绑定具有优势。其中一个是您可以使用Intellisense来指导您可以在编码中使用的绑定对象的可用属性。而且,据说它在性能方面更快。您也可以使用内置常量。无需检查它的等价值。这是讨论here

如果绑定具有不同版本的对象,则后期绑定也具有优势。这降低了由于版本不兼容而导致运行时错误的风险(也在第1个链接中提到)。

至于我,我总是在开发过程中使用Early bind,因此我可以使用Intellisense。如果需要转换为Late bind,我会在我或客户进行强大测试之后再做。

其他

当您使用CPearson在其帖子here中讨论的早期绑定Don't Use Auto-Instancing Object Variables时。以下是他博客的摘录。

  

对于对象类型变量,可以在Dim语句中包含New关键字。这样做可以创建所谓的自动实例化变量。同样,虽然这似乎很方便,但应该避免。与某些程序员可能认为的相反,在处理变量声明时不会创建对象。相反,在代码中第一次遇到对象时会创建该对象。这意味着,首先,在创建对象时,您的控制有限。其次,这意味着您无法测试对象是否为Nothing,代码中的常见测试以及常见的测试和诊断技术。

设置变量的更好方法是:

Dim dict As Scripting.Dictionary
Set dict = New Scripting.Dictionary