Словарь свойств в классе VBA - PullRequest
1 голос
/ 08 октября 2009

Меня попросили изменить лист Excel с некоторым программированием arcaic. Я решил переписать его, а не изменять все множество GOTO-статов и статических массивов. Мой опыт работы в C #, поэтому это было немного сложно (примечание: я уверен, что соглашение об именах плохое, я привык использовать подчеркивание для определения частных переменных)

У меня проблемы с инициализацией атрибута словаря типов в классе, который есть у меня в приложении VBA.

Сокращенная версия класса выглядит следующим образом

Private pTerminalCode As String
Private pTerminalName As String
...... other attributes
Private pPayRoll As Dictionary

'Propeties
Public Property Get terminalCode() As String
  terminalCode = pTerminalCode
End Property
Public Property Let terminalCode(Value As String)
  pTerminalCode = Value
End Property
....... more properties
Public Property Get headCount() As Dictionary
  headCount = pHeadCount
End Property
Public Property Let headCount(Value As Dictionary)
  pHeadCount = Value
End Property

Когда я пытаюсь использовать следующее, я получаю сообщение об ошибке «Аргумент не является обязательным» в свойстве Get атрибута headCount ().

Private Function PopulateTerminal()
   Dim terminal As clsTerminal
   Set terminal = New clsTerminal

   terminal.terminalCode = "Wil"
   terminal.headCount.Add "Company", 100
 End Function

Я предполагаю, что где-то мне нужно инициализировать словарь (т. Е. = Новый словарь), однако я борюсь с тем, где его разместить. В C # я делаю это в конструкторе без проблем, не уверен, что здесь делать.

Спасибо

1 Ответ

4 голосов
/ 08 октября 2009

Вы можете сделать это в конструкторе класса VBA, например: -

Public Sub Class_Initialize()
    Set myDictionary = New Dictionary
End Sub

Не забывайте всегда использовать ключевое слово Set при назначении ссылки на объект, например, :-

Public Property Get Foo() As Dictionary
    Set Foo = myDictionary
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...