VBA Найти номер строки через цикл - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть некоторый код ниже, который проходит по каждой строке в столбце L и запускает сценарий ниже для каждой строки, в которой гиперссылка присутствует в столбце L, код работает отлично, он открывает и очищает данные, но я хотел бычтобы добавить значения в другие столбцы на основе обрабатываемой строки.

Public Sub CallRangeL_Urls()
   Dim i As Range
   For Each i In Sheet1.Range("L4:L200")
    ImportData i.Value
   Next i
End Sub

Public Sub ImportData(ByVal urlToOpen As String)

...

With CreateObject("msxml2.xmlhttp")
.Open "GET", urlToOpen False 'Cell that contains hyperlink
.send
HTML_Content.body.innerHTML = .responseText
End With

' Code here to scrape

'Add Value to Sheet1

Sheets(1).Range("E4").Value = rng1.Offset(0, 1)
Else

Sheets(1).Range("E4").Value = 0
End If


End Sub

Так, например, если он очищает данные от URL, расположенного в L4, я хотел бы, чтобы он выгружал соответствующие данные в E4,как показано Sheets(1).Range("E4").Value = rng1.Offset(0, 1)

Как получить код, чтобы найти его текущую строку или увеличивать его каждый раз?Я пробовал следующее, и это, к сожалению, не работает.

rowNumber = Sheets(1).Range("L4:L150").Row
Sheets(1).Cells(rowNumber, "E").Value = rng1.Offset(0, 1)

Любая помощь очень ценится.Спасибо

1 Ответ

0 голосов
/ 24 февраля 2019

Прямо сейчас он всегда будет помещать данные в E4, но если вы передадите сам диапазон в ImportData, вы можете использовать смещение, чтобы найти правую строку в столбце E:

в цикле for,вызов ImportData i Вместо ImportData i.Value

Измените подзаголовок на:

Public Sub ImportData(ByVal urlRange as Range)

И вместо urlToOpen используйте urlRange.value

Когда вы хотитепоместите значение в столбец E вместо E4, используйте urlRange.Offset(0,-7), поскольку E на 7 столбцов меньше, чем столбец L.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...