【发布时间】:2020-01-14 22:48:29
【问题描述】:
我知道有很多类似的问题,但我看到的问题都没有解决我的问题。 我对 VBA 完全陌生,我不明白它的数据结构是如何工作的。
我从 Web API 获取 JSON 字符串,并尝试将特定字段打印到电子表格中。 JSON 格式如下:
{
"responses":[
{
"responseId":"someId",
"values":{
...,
"QID2":1
}
},
{
"responseId":"someOtherId",
"values":{
...,
"QID2":2
}
},
...
]
}
我感兴趣的字段是“QID2”,它的值总是在 [1,3] 范围内。 这是我解析和打印此 JSON 的代码:
'Load response into sheet
Dim Parsed As Dictionary: Set Parsed = JsonConverter.ParseJson(oHttp.responseText)
Dim Responses As Variant
ReDim Responses(Parsed("responses").Count)
Dim Response As Dictionary
Dim i As Long
i = 0
For Each Response In Parsed("responses")
Responses(i) = Response("values")("QID2")
Next Response
Sheets("Sheet1").Range(Cells(1, 1), Cells(Parsed("responses").Count, 1)) = Responses
我使用 Debug.Print 检查了 Responses 包含不同的值(1、2 和 3 的组合)。但是此代码的输出仅在工作表上打印一列 1。
如何将数组Responses 正确打印到工作表上?
编辑:仔细检查后,我的循环似乎很奇怪,因为它不会增加i(我从 somwhere 复制了这个语法)。这是正确的吗?
【问题讨论】:
-
i = i + 1在循环内...我想Parsed("responses").Count > 1. -
你已经初始化了一个水平数组(每个定义)。您必须转置数组以填充垂直范围 >
Application.Transpose(Responses)。如果您不转置数组,它将使用数组中的第一个元素填充所有单元格。 -
我之前尝试过 i = i + 1 和 Application.Transpose 但不是同时使用。它现在可以同时使用。
-
如果回答满意,可以标记为接受吗?