【发布时间】:2020-02-20 06:52:35
【问题描述】:
我有一些可能很容易解决的问题,即访问类对象数组中的浮点数组。 在我的 Excel 文档中,我声明了一个具有一些属性的类 TData,例如
Public weight As Double
Public segments As Variant
然后在模块中声明一个对象数组和一个修改数据的函数:
Dim dataset(126) As Object
Function modify()
Set dataset(0) = New TData
dataset(0).weight = 50
dataset(0).segments = Array(5.5,2,1)
Debug.Print dataset(0).segments(0) ' this produces an error 451
t = dataset(0).segments
Debug.Print t(0) ' this is fine and prints the correct answer
End Function
如果我尝试使用“dataset(0).segments(0)”行直接访问该值,我将收到错误 451“Property let procedure not defined and property get procedure did not return an object”。如果我首先将数组分配给一个变量,我可以访问该值。
现在我不明白为什么我不能访问嵌套数组的值。我想这是一些我在任何地方都找不到的特定语法。问题是,当我将“dataset(0).segments”添加到手表时,它会列出具有上述“dataset(0).segments(0..2)”符号的值。
【问题讨论】:
-
Debug.Print dataset(0).segments()(0) -
太棒了!谢谢。现在看起来这会返回一个 ByValue 值,因为尝试执行
dataset(0).segments()(0) = 7.2是有效的,但不会修改原始数组。我目前正在考虑只使用一个 Let 方法,但是还有一个符号可以直接写入数组吗? -
我认为如果你想修改它,你需要把数组拉出来,或者在对象上创建一个setter方法。