我听说很多VBA缺少继承。我做了一些解决方法,现在在我看来,这正是继承的作用。我离pro =)很远,并且可能缺少一些东西。因此,我非常感谢您对可能存在的不利因素的想法。
当我发现仍然可以完全实现接口类中的功能(不仅是签名)时,我感到非常惊讶,这使我想到了以下内容。我看到有些人在合成的帮助下做了类似的事情,但是他们在界面中仅使用了签名。
IBird-类
Public Sub SayFromInterface()
Debug.Print "Tweet from IBird"
End Sub
Public Sub SayFromInstance()
End Sub
Run Code Online (Sandbox Code Playgroud)
乌鸦级
Implements IBird
Private pBird As IBird
Private Sub Class_Initialize()
Set pBird = New IBird
End Sub
'let you use already implemented code from "abstract class", to avoid
'duplicating your code, which is the main point of inheritance
'in my opinion
Public Sub IBird_SayFromInterface()
pBird.SayFromInterface
End Sub
'you can override the IBird function (common use)
Public Sub IBird_SayFromInstance()
Debug.Print "Tweet from Crow" …Run Code Online (Sandbox Code Playgroud) VBA Array 函数将简单类型的变量转换为值,不存储变量引用。但是如果我传递一个类变量,它会按预期工作。它应该是这样的还是我错过了什么?
主模块
Sub test()
Dim collection As collection
Set collection = New collection
Dim i As Long
Dim cl As New tst
i = 25
cl.i = 25
Debug.Print "Original i = " & i
Debug.Print "Original cl.i = " & cl.i
Debug.Print
collection.Add Item:=Array(i)
collection.Add Item:=Array(cl)
Debug.Print "i in array in collection: collection(1)(0) = " & collection(1)(0)
Debug.Print "i from class in array in collection: collection(2)(0).i = " & collection(2)(0).i
Debug.Print
i = i + 1
cl.i …Run Code Online (Sandbox Code Playgroud)