VBA通过循环查找行号

时间:2019-02-24 10:57:20

标签: excel vba

我下面有一些代码循环遍历L列的每一行,并在Col 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

例如,如果要从位于L4中的URL抓取数据,我希望它将对应的数据转储到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 :(得分:1)

现在,它将始终将数据放入E4,但是如果将范围本身传递给ImportData,则可以使用offset在E列中找到右行:

在for循环中,调用ImportData i而不是ImportData i.Value

将子标题更改为:

Public Sub ImportData(ByVal urlRange as Range)

使用urlToOpen代替urlRange.value

如果要将值放入E列而不是E4列,请使用urlRange.Offset(0,-7),因为E比L列少7列。