Подтвердить что ты не робот

Как помещать определяемый пользователем тип данных в словарь

Я пытаюсь определить свой собственный тип данных и поместить его в словарь как значение. VBA жалуется, что он не принимает мой тип данных. Любые идеи о том, как это сделать?

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

Это сообщение об ошибке:

Только пользовательские типы, определенные в публичных объектных модулях, могут быть принудительно применены к варианту или из него или переданы в модули с поздней привязкой.

4b9b3361

Ответ 1

После некоторого дополнительного рытья я нашел этот ответ:

Если вы хотите поместить определенный пользователем тип данных в словарь коллекции, вы должны определить его как класс. Вы можете сделать это, добавив новый модуль класса и просто добавив этот код:

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

Теперь я могу динамически добавлять переводы.