【问题标题】:How to write if function for more than one row on website table HTML如何在网站表格HTML上编写多行的if函数
【发布时间】:2013-12-12 13:50:27
【问题描述】:

DataGridReservations 是一个表。我正在按行搜索。

我的 VBA 适用于一排。有没有办法循环这个 VBA 代码来搜索表中的每一行?也许通过为每个循环将 xobj1 = .... 中的 Item(2) 增加 1?

Dim xobj1 As Object
Set xobj1 = IE.Document.getElementById("DataGridReservations").getElementsByTagName("tr").Item(2)
Set xobj1 = xobj1.getElementsByTagName("td")
    If Range("B1").Text = xobj1.Item(9).innertext Then
    Range("H" & (ActiveCell.Row)) = xobj1.Item(3).innertext
    Else
    Range("H" & (ActiveCell.Row)) = "0"
    End If

评论后重写

我现在得到一个对象不支持属性或方法

Dim xobj1 As Object
Dim xobj2 As Object
Dim colRows As Object
Set colRows = IE.Document.getElementById("DataGridReservations").getElementsByTagName("tr")
    For i = 0 To colRows.Length - 1
        Set xobj1 = colRows.Item(i)
        Set xobj2 = colRows.getElementsByTagName("td")
        If Range("B1").Text = xobj2.Item(9).innertext Then
        Range("H" & (ActiveCell.Row)) = xobj2.Item(3).innertext
        Else
        Range("H" & (ActiveCell.Row)) = "0"
        End If
    Next

【问题讨论】:

  • 您可以遍历调用getElementsByTagName("tr")返回的集合(忽略第一个实例)。例如。见:stackoverflow.com/questions/15555513/…
  • 对,我只是在想也许有一种方法可以将 2 写成 x+1 这样的公式,其中 x 是活动项目编号。并循环遍历列表,直到我用完表中的 tr 元素。 (1.e 第一个循环会设置 item(2),第二个循环会设置 item(3),等等)
  • 为了重新整理,我也写了这个问题stackoverflow.com/q/20255214/3023445

标签: html vba excel html-table


【解决方案1】:

如果你想用计数器循环遍历行,你可以这样做:

Set colRows = IE.Document.getElementById("DataGridReservations").getElementsByTagName("tr")
For i = 0 to colRows.Length -1
    Set xobj1 = colRows.Item(i)
    'Your code
Next

索引从“0”开始。因此计数器运行到 '.Length -1'

已编辑,修改后的问题:

Dim xobj1 As Object
Dim xobj2 As Object
Dim colRows As Object

Set colRows = IE.Document.getElementById("DataGridReservations").getElementsByTagName("tr")
    For i = 0 To colRows.Length - 1
        Set xobj1 = colRows.Item(i)
        Set xobj2 = xobj1.getElementsByTagName("td")
        If Range("B1").Text = xobj2.Item(9).innertext Then
        Range("H" & (ActiveCell.Row)) = xobj2.Item(3).innertext
        Else
        Range("H" & (ActiveCell.Row)) = "0"
        End If
    Next

【讨论】:

  • 在你的 for...next 中我可以设置 xobj1 = colRows.Item(i) 吗?
  • 是的,当然。或 colRows(i)。我应该这样写的:)
  • 嗯。对象不支持属性或方法。查看我的重写问题
  • 尝试:设置 xobj2 = xobj1.getElementsByTagName("td")
猜你喜欢
  • 2011-10-06
  • 2015-05-24
  • 2019-01-21
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-20
相关资源
最近更新 更多