VBA对于每个循环不循环我多么希望
问题描述:
我有以下的循环VBA对于每个循环不循环我多么希望
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在我的节点中?
答
试试这个:
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循环它得到的方式。
编辑:
你真的不需要一个柜台都没有。你可以用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
出色地工作!我用你的第二个编辑。非常感谢 – Ingram