0

私が構築しているさまざまなvbaカスタムオブジェクトで、同一のプロパティとメソッドをコピーして貼り付けるのにかなりの時間を費やしています。VBA でカスタム オブジェクト階層を作成して、1 つのオブジェクトが他のオブジェクトからプロパティとメソッドを継承する方法を教えてください。

Pythonでは、次のように書くと思います:

クラスカー(オブジェクト)

なんでもいい

Class SlowCar(車)

何でも継承する

クラス 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 に答える