在VBA中启用字典对象

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

  1. 使用CreateObject("Scripting.Dictionary") (否“Microsoft脚本运行时”);
  2. 首先打开引用“Microsoft Scripting Runtime”,然后使用Dim dict As New Scripting.Dictionary

他们两个在我的机器上工作。 我想知道这两种方法有什么区别?

我所知道的唯一区别是第一个使用Late bind ,第二个使用Early bind 。 这两者之间的区别在这里解释。

早绑定有优势。 其中之一是您可以使用Intellisense来指导您可以在编码中使用的绑定对象的可用属性。 而且,据说在性能方面速度更快。 您也可以按原样使用内置常量。 没有必要检查它的等价值。 这在这里讨论。

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

至于我,我总是在开发过程中使用Early绑定,所以我可以利用Intellisense 。 如果有需要转换为Late bind,那么在我或客户完成强大的testing之后,我会做。

额外:

当你使用Early bind时,请Don't Use Auto-Instancing Object Variables CPearson在他的post中讨论的Don't Use Auto-Instancing Object Variables 。 以下是他的博客摘录。

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

所以更好的方法来设置你的variables是:

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