从另一个对象访问一个对象的属性

时间:2017-09-21 08:44:35

标签: excel vba excel-vba

我是面向对象编程的新手。 我在类模块中有两个类:

ClassA的

Public Time As Double

ClassB的

Public Sub Progress()
    ClassAObject.Time = 5
End Sub

这是子程序

中运行的代码
Public Sub Progressing()
    Dim ClassAObject As New ClassA
    Dim ClassBObject As New ClassB
    Call ClassBObject.Progress
End Sub

子例程ClassBObject.Progress似乎无法访问ObjectA。我想我如何引用该对象可能是错误的。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

B类不知道A类。有很多方法可以做到这一点,但一种方法是让.Progress() sub接受输入。

ClassA中的代码:

Public Time As Double

ClassB中的代码:

Public Sub Progress(ClassAObject As ClassA)
    'Assuming that you have a .Time property in ClassAObject
    ClassAObject.Time = 5
End Sub

主要代码:

Sub Main()
    Dim ClassAObject As New ClassA
    Dim ClassBObject As New ClassB
    ClassBObject.Progress ClassAObject
End Sub

答案 1 :(得分:2)

您可以将ClassA的实例传递给Progress方法。例如:

Progress方法更改为:

Public Sub Progress(a As ClassA)
    a.Time = 5
End Sub

并称之为:

Public Sub Progressing()
    Dim ClassAObject As New ClassA
    Dim ClassBObject As New ClassB
    Call ClassBObject.Progress(ClassAObject) ' <--- pass instance of ClassA
End Sub

我建议为您的课程和对象提供更具描述性的名称,即使您只是在练习。它将使您和其他人更容易阅读和理解您的代码。例如,Dim apple As New Fruit总是比Dim ClassAObject As New ClassA更容易理解。