我遇到了 CallByName 函数的问题。我正在尝试根据属性的值将集合拆分为较小的集合,然后将这些较小的集合分配给数组。
下面的代码部分是导致问题的位。每当 X 引用包含字符串值的属性时,代码都可以正常工作,但是每当我尝试传递 CallByName 类型为 double 的属性时,它就无法正确获取它(我认为)。
Dim temp as Variant
For i = 1 To UBound(arr, 1)
Set collSplit = New Collection
For Each v In collTruck
temp = CallByName(v, X, VbGet) ''''''''
If temp = arr(i, 1) Then ''''''''
collSplit.Add v
arr(i, 2) = arr(i, 2) + 1
End If
Next v
Set arr(i, 3) = collSplit
Next i
最初我只是有If CallByName(v, X, VbGet) = arr(i, 1) Then
,但我添加了该temp
行以帮助调试。
在两条注释行上放置断点表明,当 X 引用类型为 double temp 的属性时,它始终保持为空。但是如果我尝试在即时窗口中,? CallByName(v, X, VbGet)
它会给我我正在寻找的价值。为什么CallByName(v, X, VbGet)
只在立即窗口中接收到的值?