0

我在我正在构建的各种 vba 自定义对象中复制粘贴相同的属性和方法浪费了相当长的时间。如何在 VBA 中创建自定义对象层次结构,以便一个对象并从其他对象继承属性和方法。

在 python 中,我可能会写一些类似的东西:

类车(对象)

任何

慢车类(汽车)

继承任何东西

类 FastCar(汽车)

继承任何东西

提前谢谢。

4

2 回答 2

0

如果我明白你在说什么,这可以通过类模块来完成。

  1. 从 VBA 编辑器中,选择插入 > 类模块
  2. 通过属性窗口将类模块的名称更改为您想要的任何名称(Car例如)(如果尚未出现,请按 F4 使其出现)

现在您已经创建了类模块,您可以定义它的变量和/或属性。下面的示例将进入您的Car类模块创建一个包含汽车名称和速度的对象

Private carName As String
Private carSpeed As Integer

' Car Name
Public Property Get Name() As String
    Name = carName 
End Property
Public Property Let Name(result As String)
    carName = result 
End Property 

' Car Speed
Public Property Get Speed() As Integer
    Speed = carSpeed
End Property
Public Property Let Speed(result As Integer)
    carSpeed = result 
End Property

然后从您的模块中,您可以执行以下操作

Sub CreateMyCars()
Dim slowCar as Car
Dim fastCar as Car

    Set slowCar = New Car
    Set fastCar = New Car

    slowCar.Name = "GoKart"
    slowCar.Speed = 35

    fastCar.Name = "Ferarri"
    fastCar.Speed = 185
End Sub
于 2013-08-15T02:25:19.203 回答
0

VBA 通过使用接口支持继承,但它们只“继承”方法的签名,而不是实现。

重用对象实现的一种方法是通过组合。

Class Car(Object)
    whatever

Class SlowCar(Car)
    Implements Car

    private mCar         as Car

    Private Sub Class_Initialize
        set mCar = new Car
    End Sub

    Private Sub Car_whatever
        Call mCar.whatever
    End Sub 

FastCar 也一样。

于 2016-06-21T10:04:19.480 回答