我想知道在VBA中使用Dictionaries是否会给我的代码带来任何缺点?与兼容性问题一样,因为它不是VBA本地的
我不是编程方面的专家,但我已经习惯了Python及其词典。 现在我正在学习VBA,因为我需要自动化一些岩土结构的设计(使用excel)和绘图(AutoCAD)。
我发现可以通过设置对MS Scripting运行时的引用来在VBA中使用它们。我对使用它们有任何疑虑吗?像未来版本的Windows或办公室中的兼容性问题一样?
答案 0 :(得分:2)
我的问题很普遍,我会尝试这样回答......
在任何语言中使用任何对象类时,要考虑的两件事情可能会带来一些弊端:
Tools -> References
中找到dll引用的位置。这允许类的Intelli-text显示哪些对象很好并且它在启动时绑定了dll,缺点是当您在同一操作系统上移动到不同的系统时,可能不会出现相同版本的dll并且会使代码中断。另一方面,后期绑定是在运行时创建对象实例时认为set MyDictionary = CreateObject("Scripting.Dictionary")
这将找到操作系统中链接的当前可用的操作系统dll ,专业人士在不同平台上的兼容性更高,但是你不会拥有Intelli-Text,并且会在运行时进行绑定(虽然几乎没有缺点)。需要注意的事项
字典存储对象以及指向内存中对象的指针,这意味着如果你有一个自己的类存储在字典中并继续处理类(即在运行时更新参数值)时间)然后字典中的类也会改变,除非你开始研究new
类。
要在VBA中优化您的字典,请记住(这不是必要的,但这有助于并且是一种好的做法)告诉字典如何评估密钥。即
Set MyDictionary = New Dictionary
MyDictionary.CompareMode = <TextCompare|BinaryCompare|DatabaseCompare>
总之,虽然字典是存储可能或可能没有排序的信息时使用的最佳对象,并且可能在大小和类型上未定义。
以下是一些讨论词典与其他存储类型的帖子。