Вы столкнулись с одним из ограничений Агрегатов в VBA. Вы не можете реализовать другой класс, если другой класс имеет какие-либо открытые методы или свойства с подчеркиванием в имени. Collection
класс, конечно, имеет _NewEnum
, но любое подчеркивание вызовет проблему.
Например, если вы создали класс AddressClass
, который имел следующее:
Public Address_City As String
Затем создал еще один класс CustomerAddress
:
Implements AddressClass
Private Property Get ClassInterface_Address_City() As String
End Property
Private Property Let ClassInterface_Address_City(ByVal RHS As String)
End Property
При компиляции вы получите сообщение об ошибке «Объектному модулю нужно реализовать Address_City для интерфейса AddressClass». Изменение свойства на AddressCity
устраняет ошибку.
Возможное решение: Если я правильно понимаю, вы хотите реализовать класс коллекции, чтобы вы могли передать свой новый класс методам, которые принимают коллекции в качестве параметров. Можно ли изменить эти методы? Я бы предложил создать собственный класс коллекции MyCollection
и затем реализовать его. т.е. UniformMyCollection
Таким образом, вы можете полностью избежать проблем с подчеркиванием.
Что касается Count
, я бы доверял Обозревателю Объектов над текстом справки в любое время. С другой стороны, если вы создаете свой собственный класс коллекции, не имеет значения, какой класс вы выберете.