【发布时间】:2017-06-22 13:58:04
【问题描述】:
我曾经有以下工作代码
Set result = DecodeJson(MyRequest.responseText)
Dim keys() As String
keys = GetKeys(result.issues)
现在,我的方法发生了变化,结果不是对象,而是基于Array of class objects as class member in VBA 的集合
Dim resultsFromQueries As Collection
Set resultsFromQueries = GetAllJSonObjects(searchString) ' this calls DecodeJson(MyRequest.responseText) as per the code snippet above
Dim i As Integer
For i = 0 To resultsFromQueries.Count
Dim keys() As String
Dim item As Object
Set item = resultsFromQueries.item(i + 1) ' I guess it's not 0 based?
keys = GetKeys(item.result.issues) 'KABOOM
我现在遇到的问题是我不断收到以下异常
运行时错误“424”:
需要对象
在监视窗口中查看,item 显示为 Variant/String 类型,其值为 "[object Object]"
我需要投射吗?
【问题讨论】:
-
如果是返回的对象,需要使用
Set:Set item = resultsFromQueries.item(i + 1) -
嗨@Rory,可悲的是,同样的问题仍然存在(我已经更新了我的帖子以显示它)
-
如果你用了Set就不可能是String,那现在是什么对象类型呢?
-
resultsfromQueries是Collection/Collection。Set item...由于上述错误消息@Rory,永远不会被执行 -
据我所知,我认为您将在循环中遇到溢出错误。尝试; [For i = 0 To resultsFromQueries.Count - 1] 和 [Set item = resultsFromQueries.item(i)]