excel vba 导入 system.collections.hashmap 到一个模块中

kil*_*tek 2 import excel vba module function

从我的MS Excel 2010安装内部,我打开了Visual Basic Editor。(选项卡开发人员工具 -> Visual Basic)

在Visual Basic 编辑器中, 我右键单击项目窗口并创建了一个模块. (插入 -> 模块)

然后我在代码窗口中输入以下代码:

Sub myFunction()
    'do some stuff to my table cells, not important
End Sub
Run Code Online (Sandbox Code Playgroud)


在函数体内编码了很多东西后,我认为我需要一个 Hashmap,它需要在给定的函数体内访问。不幸的是,我无法通过这样做导入所需的类:

Imports System.Collections
Sub myFunction()
    'do some stuff to my table cells, not important
End Sub
Run Code Online (Sandbox Code Playgroud)

的错误消息通过按F5启动模块时出现。它说(由我从德语翻译成英语):“编译时出错:程序外非法”。

当代码结构如上时,如何在 VBA 中导入某些内容?我通常是一个java 或 python人。如果函数仍在执行,您还可以重新构建代码。

小智 5

在这种情况下,您要么使用

收藏类

或者

字典类


Collection类内置在VBA 中,因此您无需添加外部引用即可使用它。你可以简单地声明它

Dim c as Collection
Set c = new Collection
Run Code Online (Sandbox Code Playgroud)

Collection公开 4 种方法:add, count, item, remove所以它可能对你来说还不够。

Customizing, expanding Collection class


如果你想使用像HashTable/HashMap这样的东西,然后Microsoft Scripting Runtime通过在 VBE 窗口中单击Tools和添加引用References

然后你可以在Dictionary类中使用早期绑定和智能感知

Dim d as Dictionary
Set d = new Dictionary
Run Code Online (Sandbox Code Playgroud)

或者使用后期绑定

Dim d as Object
set d = CreateObject("Scripting.Dictionary")
Run Code Online (Sandbox Code Playgroud)

我会选择早期绑定(第一个示例 - 添加对 VBA 项目的引用),以便您可以使用 VBA Intellisense。

您可以使用对象浏览器查看Dictionary或Collection分类 - 只需点击F2VBE 窗口并输入Dictionary或Collection

在此处输入图片说明

有用的阅读 Dictionary class