【发布时间】:2020-05-15 14:44:00
【问题描述】:
我开始在 VBA 中使用类,但我不明白为什么我不能在我创建的类的对象中向名为 SDA 的数组添加任何值。
类模块是:
'clsProject Class Module Code
Public LinhaProjeto As String
Public SDA As Variant
Public Sub Class_Initialize()
ReDim SDA(1 To 12)
Dim i As Integer
For i = 1 To 12
SDA(i) = 0
Next i
End Sub
而常规模块中的 sub 是
Sub test()
Dim oProject As clsProject
Set oProject = New clsProject
oProject.SDA(1) = 2
Debug.Print oProject.SDA(1)
End Sub
代码运行没有任何错误,但它没有像我想象的那样添加值。在名为“test”的子的末尾,oProject.SDA(1) 的值仍然是 0,而不是我想要的 2。
谁能帮我找出我的错误?
感谢您的帮助!
【问题讨论】:
-
我不太确定...但是数组不允许作为类的公共成员(例如,如果您在类中使用“DIM SDA()”,则会产生编译错误) .我承认我可能完全错了,但也许在语法上没有错,但是一旦你强制变体成为一个数组,那么主模块代码就会忽略它而不是产生运行时错误(?)顺便说一句,还有很多其他方法实现你正在尝试做的事情(例如,类中的私有数组并将分配包装在一个属性中)所以它不应该阻止你达到你的最终目标。干杯
-
@Techno Dabbler 是对的。一个类可以引用在标准模块中声明的公共变量,但反之则不行。将
SDA()声明为私有并使用Property Get从类外部检索其值。