DataGridReservations - это таблица. Я выполняю поиск по строке.
Мой VBA работает в течение одной строки. Есть ли способ закодировать этот код VBA для поиска каждой строки в таблице? Может быть, увеличив Item (2) в xobj1 =.... на 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
Если вы хотите перебрать строки со счетчиком, вы можете сделать это следующим образом:
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
getElementsByTagName("tr")
(игнорируя первый экземпляр). Например. см .: stackoverflow.com/questions/15555513/…