如何将用户定义的数据types放入Dictionary中

我试图定义我自己的数据types,并把它放在一个字典作为一个值。 VBA抱怨说它不接受我的数据types。 任何想法如何得到这个工作?

Option Explicit Public Type Translation german As String french As String italian As String End Type Private resource As Object Public Sub addTranslation(key As String, g As String, f As String, i As String) Dim trx As Translation trx.german = g trx.french = f trx.italian = i resource.add key, trx '<== here VBA is complaining End Sub Public Sub initResource() If resource Is Nothing Then Set resource = CreateObject("scripting.dictionary") End Sub 

这是错误的问题:

只有在公共对象模块中定义的用户定义的types可以强制到变体或从变体强制传递或传递到延迟绑定的模块。

经过一些挖掘我发现这个答案:

如果你想把一个用户定义的数据types放到一个集合字典中,你必须把它定义为类。 你可以通过添加一个新的类模块来添加下面的代码:

 Public german As String Public french As String Public italian As String 

由于我命名类模块trans ,我的结果代码如下所示:

 Private resource As Object Public Sub addTranslation(k As String, g As String, f As String, i As String) Dim trx As trans Set trx = New trans trx.german = g trx.french = f trx.italian = i resource.Add k, trx End Sub Public Sub initTranslations() If resource Is Nothing Then Set resource = CreateObject("scripting.dictionary") End Sub 

现在我可以dynamic地添加翻译。