【发布时间】:2020-05-09 22:46:23
【问题描述】:
我正在处理 VBA 中的一个相当复杂的问题,我决定在不同的类中构造它。 其中一个类包含一个数组,我需要在类之外单独修改组件。
问题可以归结为类的定义
Public a As Variant
Private Sub Class_Initialize()
ReDim a(5) As Double
' Set some value
a(1) = 20
End Sub
还有一个访问数据的子:
Sub Test()
Dim b As New DummyTest
b.a(4) = 7
Debug.Print (b.a(1))
Debug.Print (b.a(4))
End Sub
调试窗口的结果是20 0。我通过检查检查了这个结果,并确认不能从类的外部修改属性 a。 有趣的是,如果替换为其他数组,则可以修改该属性,例如:
Sub Test2()
Dim b As New DummyTest
b.a = Array(1, 2, 3, 4, 5)
Debug.Print (b.a(1))
Debug.Print (b.a(4))
End Sub
按预期运行。我很困惑,因为在类上下文和任何其他情况下都允许元素访问,但在这种特定情况下它不会起作用。没有错误消息,它只是拒绝更改数组的内容。
我会找到解决方案的工作,但缺少这种访问数据的方式是一个真正的 PITA。
希望你能帮我解决这个问题。
提前谢谢你!
【问题讨论】: