VBA:在类B的属性中实例化类A.
我是excel VBA OOP的初学者,需要帮助将带有属性的类实例放入另一个类的属性中。 我有一个对我有意义的方法,但是不起作用。 我不确定它只是一个简单的语法/结构错误,或者如果我完全忽略了这个标记。 这是一个说明我的问题的简单例子:
-
类A有一个string值的属性。
-
B类拥有一个拥有A类实例的属性,并且此属性接受一个string参数并将其传递给A类属性。
A类
Private strProp As String Public Property Let Prop(sProp As String) strProp = sProp End Property
B类
Private clsA As New ClassA '''DIFFERENT ATTEMPTS OF THE SAME METHOD: Public Property Let ClassA(strNameA As String) clsA.Prop = strNameA End Property 'Public Property Set ClassA(strNameA As String) ' clsA.Prop = strNameA 'End Property 'Public Property Set ClassA(strNameA As String) ' ' Dim xClsA As ClassA ' Set xClsA = New ClassA ' ' xClsA.name = "Foobar" ' clsA = xClsA ' 'End Property ' Public Function message() msgbox(clsA.Prop) End Function
模块(实践中的类)
dim xClassB as ClassB set xClassB = new ClassB xClassB.ClassA("Foobar") xClassB.message 'should display Foobar
我得到的错误:
“我仍然得到一个编译错误:同一属性的属性过程的定义不一致或者属性过程有一个可选参数,一个ParaArray或一个无效的最终参数设置”
A类
Private strProp As String Public Property Let Prop(sProp As String) strProp = sProp End Property Public Property Get Prop() As String Prop = strProp End Property
ClassB的:
Private clsA As New ClassA Public Property Set ClassA(strNameA As String) clsA.Prop = strNameA End Property Public Function message() msgbox(clsA.Prop) End Function
…并在ClassA中添加一个Get
for Prop