Converting a vb.net dictionary to a vba dictionary

浪尽此生 提交于 2019-12-02 11:37:28

问题


I was pleased to find that I could call structs that I had set up in vb.net straight into excel vba - using COM visible and registering using regasm.exe.

I am struggling to do the same with a dictionary created in vb.net.

I found this link which suggested that the dictionary in vb.net was not the same as the runtime.scripting dictionary found in vba.

I was unable to have much luck with the links suggested in the comments though.

Here is the vb.net code:

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

Here is the vba code:

Function MyReturnDict()
   Dim classLib As New MyVBClass.Class1
   Set MyDict = classLib.ReturnDict()
     \\do stuff with dictionary
   MyReturnDict = Result
End Function

Any help/advice would be much appreciated!


回答1:


Hans Passant's solutions in the comments above perfectly solved the problem:

In VB.net, either use:

Public Function ReturnDict() As System.Collections.IDictionary

or reference scrrun.dll and:

Public Function ReturnDict() As Scripting.Dictionary
    Dim dict As New Scripting.Dictionary

The latter solution provides a VBA dictionary that can be used as one would like.



来源:https://stackoverflow.com/questions/30270904/converting-a-vb-net-dictionary-to-a-vba-dictionary

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!