【问题标题】:VBA For each loop not looping how i wantVBA 对于每个循环不循环我想要的方式
【发布时间】:2016-06-19 13:50:20
【问题描述】:

我有以下循环

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?

【问题讨论】:

    标签: vba foreach nodevalue


    【解决方案1】:

    试试这个:

    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
    

    【讨论】:

    • 效果很好!我使用了您的第二次编辑。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2018-02-13
    • 2018-10-09
    • 2021-07-05
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    相关资源
    最近更新 更多