为了一个爱好,我试图学习VBA。 现在我试图在excel表中获得游戏标题的价格。 我目前只有名字和ID。 (https://www.kinguin.net/nl/category/ {{ID}})
我设法让它适用于1个字段:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = Range("Spel_ID").Row And _
Target.Column = Range("Spel_ID").Column Then
Dim IE As New InternetExplorer
IE.Visible = False
IE.navigate "https://www.kinguin.net/product/" & Range("Spel_ID").Value
Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE
Dim Doc As HTMLDocument
Set Doc = IE.document
Dim sDD As String
sDD = Doc.getElementsByClassName("relative-price-container")(0).innerText
IE.Quit
Dim aDD As Variant
aDD = Split(sDD, ",")
Range("Prijs").Value = aDD(0)
End If
End Sub
然而,这仅更新1个字段。我将如何循环这个并填充整个列?
修改
我设法制作了一个For循环,但我并不完全在那里。我不确定如何将结果插入列中。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim row As Range
Dim cell As Range
Set rng = Range("A3:A10")
For Each row In rng.Rows
For Each cell In row.Cells
If Target.row = Range("Spel_ID").row And _
Target.Column = Range("Spel_ID").Column Then
Dim IE As New InternetExplorer
IE.Visible = True
IE.navigate "https://www.kinguin.net/category/" & ActiveCell.Value
Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE
Dim Doc As HTMLDocument
Set Doc = IE.document
Dim sDD As String
sDD = Doc.getElementsByClassName("relative-price-container")(0).innerText
IE.Quit
Dim aDD As Variant
aDD = Split(sDD, ",")
Range("Prijs").Value = aDD(0)
End If
Next cell
Next row
End Sub
(我觉得循环范围也可以改善..)