我在一个名为 MyEmployees 的集合中有一系列员工对象。 我想将其中一个对象指定为其他对象的优势。 我在班级 cEmployee
中创建了 pSuperior 属性以下是该类的Set和Get方法:
Public Property Set Superior(value As Object)
Set pSuperior = value
End Property
Public Property Get Superior() As Object
Superior = pSuperior
End Property
Set方法在运行时没有错误:
Set MyEmployees.Item(1).Superior = MyEmployees.Item(2)
但是当我使用
时Debug.Print MyEmployees.Item(1).Superior.Name
测试我得到运行时错误91对象变量或未设置块
我的Set Method无效吗?
答案 0 :(得分:0)
您始终使用Set
将对象分配给变量(包括函数和属性的返回值)。因此,Get
方法的代码应为:
Public Property Get Superior() As Object
Set Superior = pSuperior
End Property
答案 1 :(得分:0)
看起来你的Get属性丢失将对象分配设置为返回值。我不确定你还有什么其他的,所以这里有一些示例代码对我有用(除了没有收集)。将Get / Set对象定义为Employees也可能是一种改进。
这是示例类代码:
button(-text => 'Row1', -command => sub {do_something_with('Row 1', @_)});
使用你所描述的类的示例:
Private pSuperior As Employee
Private pName As String
Public Property Get Name() As String
Name = pName
End Property
Public Property Let Name(Value As String)
pName = Value
End Property
Public Property Get Superior() As Employee
Set Superior = pSuperior
End Property
Public Property Set Superior(Value As Employee)
Set pSuperior = Value
End Property