Интересно, можно ли создавать класс-методы в VBA. По методу класса я имею в виду методы, которые могут быть вызваны без наличия объекта класса. "Статическое" ключевое слово делает этот трюк в С++ и Java.
В приведенном ниже примере я пытаюсь создать статический метод factory.
Пример:
'Classmodule Person'
Option Explicit
Private m_name As String
Public Property Let name(name As String)
m_name = name
End Property
Public Function sayHello() As String
Debug.Print "Hi, I am " & m_name & "!"
End Function
'---How to make the following method static?---'
Public Function Create(name As String) As Person
Dim p As New Person
p.m_name = name
Set Create = p
End Function
'Using Person'
Dim p As New Person
p.name = "Bob"
p.sayHello 'Works as expected'
Set p2 = Person.Create("Bob") 'Yields an error'