我的Excel-applicatin有一个带有实用程序功能的模块。其中之一将项目添加到数组:
Public Sub addToArray(ByRef arr As Variant, item As Variant)
'Sub adds one element to a referenced array
On Error Resume Next
Dim bd As Long
bd = UBound(arr)
If Err.Number = 0 Then
ReDim Preserve arr(bd + 1)
Else
ReDim Preserve arr(0)
End If
arr(UBound(arr)) = item
End Sub
只要我传递未引用为对象成员的数组,此Sub即可完美工作。
addToArray arr, item
可以,但是...
addToArray myObject.arr, item
不是...
第二个调用将该项添加到数组,但丢失对myObject
的引用
我可以通过在每个类中实现一个方法来编写一种解决方法(不需要对象引用,因为它可以访问同一对象的属性),但这不是我要解决的问题。
请给我;)
答案 0 :(得分:1)
不幸的是,由于VBA的限制,这是不可能的。
当您访问对象的公共变量字段时,它会按值复制,因此原始参考不会公开。而且,如果将数组(内部是引用类型)声明为公共字段,则会出现编译错误“常量,定长字符串,数组,用户定义的类型和Declare语句不允许作为对象模块的Public成员“