Как поместить определенный пользователем тип данных в словарь - PullRequest
12 голосов
/ 07 февраля 2012

Я пытаюсь определить свой собственный тип данных и поместить его в словарь в качестве значения.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

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

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

1 Ответ

13 голосов
/ 07 февраля 2012

После еще нескольких копаний я нашел этот ответ:

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...