0

我有以下循环

r = 4
c = 4

Set userBeanList = XMLDOC.SelectNodes("/response/responseBody/responseList/item[recordType='TPI']/*[not(self::catch or self::reprive or self::cate or self::reet or self::aarg or self::crane)]")
For a_counter = 1 To 7
For Each userbean In userBeanList

Sheets("Sheet2").Cells(r, c) = userbean.nodeName

Sheets("Sheet2").Cells(r + 1, c) = userbean.Text
 r = r + 2
a_counter = a_counter + 1
If (a_counter = 7) Then Exit For

Next userbean
c = c + 1
r = 4
a_counter = 1
Next a_counter

它基本上遍历了我的节点,在第 4 行打印节点名称,然后在第 5 行下方的单元格中打印节点值,这重复 6 次,以便我在电子表格的列表中获得节点名称,然后是节点值。然后我有一个计数器,当它达到 7 时退出 for 循环将列增加 1 将行重置回 4 并重复此操作。但是,userBeanList 中的 For Each userbean 似乎将自身重置回开始,因此它不会再次获取下一个 userbean,而是再次获取第一个,如何修改下面的代码以获取节点中的下一个 userbean?

4

1 回答 1

3

尝试这个:

r = 4
c = 4
a_counter = 1

Set userBeanList = XMLDOC.SelectNodes("/response/responseBody/responseList/item[recordType='TPI']/*[not(self::catch or self::reprive or self::cate or self::reet or self::aarg or self::crane)]")

For Each userbean In userBeanList
    Sheets("Sheet2").Cells(r, c) = userbean.nodeName
    Sheets("Sheet2").Cells(r + 1, c) = userbean.Text
    r = r + 2
    a_counter = a_counter + 1
    If a_counter  >= 7 Then
        c = c + 1
        r = 4
        a_counter = 1
    End If

Next userbean

您正在尝试将 a_counter 用作 for 循环,而作为单独的计数器,您不需要它阻碍的 for 循环。


编辑:

你真的根本不需要 a-Counter。您可以使用 r 值检查 6 何时完成:

r = 4
c = 4

Set userBeanList = XMLDOC.SelectNodes("/response/responseBody/responseList/item[recordType='TPI']/*[not(self::catch or self::reprive or self::cate or self::reet or self::aarg or self::crane)]")

For Each userbean In userBeanList
    Sheets("Sheet2").Cells(r, c) = userbean.nodeName
    Sheets("Sheet2").Cells(r + 1, c) = userbean.Text
    r = r + 2
    If r  > 14 Then
        c = c + 1
        r = 4
    End If

Next userbean
于 2016-03-05T21:20:23.480 回答