将类模块“Class1Test”作为
Private pGreetings As Collection
Public Property Get Greetings() As Collection
Greetings = pGreetings
End Property
Public Property Let Greetings(Value As Collection)
pGreetings = Value
End Property
如果我运行子
Dim MyPhrases As Class1Test
Public Sub Test()
Set MyPhrases = New Class1Test
MyPhrases.Greetings.Add "Have a nice day"
End Sub
我收到编译错误“Argument not optional”
为什么我不能将字符串添加到集合myphrases.greetings中?请原谅新手问题。刚刚学习VBA。
答案 0 :(得分:3)
有些不对劲。
Collection是一个对象,因此在分配时必须使用Set
关键字。同样在Let
程序中,为了保证命名约定的一致性,我会使用lGreetings
代替Value
,尽管这不应该真正重要。
Private pGreetings As Collection
Public Property Get Greetings() As Collection
Set Greetings = pGreetings
End Property
Public Property Let Greetings(lGreetings As Collection)
Set pGreetings = lGreetings
End Property
这仍然会引发91
错误(对象变量或未设置块),因为您尚未实例化集合对象。可能你应该这样做的方法是在类模块的Initialize
例程中。
Private Sub Class_Initialize()
Set pGreetings = New Collection
End Sub