将 vb.net 字典转换为 vba 字典
Converting a vb.net dictionary to a vba dictionary
我很高兴地发现我可以调用我在 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
任何 help/advice 将不胜感激!
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 字典,可以随意使用。
我很高兴地发现我可以调用我在 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
任何 help/advice 将不胜感激!
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 字典,可以随意使用。