VBA对象的属性类型

时间:2016-08-21 19:59:42

标签: excel vba

返回的是“编译错误:同一属性的属性过程的定义不一致,或属性过程有可选参数,ParamArrary或无效的Set参数”。

我明白这个错误是什么,但只是看不出为什么给它这么简单,抱歉并希望有所怀疑:

Private natural_persons As Collection
Private suspicous_reports As cls_SR
Private legal_persons As Collection

Private Sub Class_Initialize()
    Set natural_persons = New Collection
End Sub

Public Property Let natural_person(S As cls_NP)
    natural_persons.Add (S)
End Property

Public Property Get natural_person(S As Integer) As cls_NP
    natural_person = natural_persons(S)
End Property

Public Property Let suspicous_report(S As cls_SR)
    suspicous_reports = S
End Property

Public Property Get suspicous_report() As cls_SR
    suspicous report = suspicous_reports
End Property

Public Property Let legal_person(S As cls_LP)
    legal_persons.Add S
End Property

Public Property Get legal_person(S As Integer) As cls_LP
    legal_person = legal_persons(S)
End Property

1 个答案:

答案 0 :(得分:0)

来自:https://msdn.microsoft.com/en-us/library/office/gg264197.aspx

  

arglist中

     

可选。表示参数的变量列表   调用时传递给Property Get过程。多   参数用逗号分隔。每个的名称和数据类型   Property Get过程中的参数必须与   Property Let程序中的相应参数(如果存在)。

您在此处使用“属性”并不理想(或者 - 正如您所见 - 可能):您可能会考虑使用Property Let方法而不是AddXXX()方法来获取