我很高兴地发现我可以将我在vb.net中设置的结构直接调用excel vba - 使用COM可见并使用regasm.exe进行注册。
我正在努力对在vb.net中创建的字典做同样的事情。
我发现这个link表明vb.net中的字典与vba中的runtime.scripting字典不同。
我对评论中建议的链接没有太多运气。
这是vb.net代码:
Public Function ReturnDict() As Dictionary(Of String, Integer)
Dim dict As New Dictionary(Of String, Integer)
dict.Add("a", 10)
dict.Add("b", 11)
Return dict
End Function
这是vba代码:
Function MyReturnDict()
Dim classLib As New MyVBClass.Class1
Set MyDict = classLib.ReturnDict()
\\do stuff with dictionary
MyReturnDict = Result
End Function
非常感谢任何帮助/建议!
答案 0 :(得分:1)
Hans Passant在上述评论中的解决方案完美地解决了这个问题:
在VB.net中,使用:
Public Function ReturnDict() As System.Collections.IDictionary
或引用scrrun.dll和:
Public Function ReturnDict() As Scripting.Dictionary
Dim dict As New Scripting.Dictionary
后一种解决方案提供了一个可以按照自己的意愿使用的VBA字典。