在IE组合框中选择一个项目

时间:2015-08-10 03:08:42

标签: vba internet-explorer

我有正确的代码导航到我想开始填充下拉列表和字段等的网站。在@Bond的建议之后,我一直在尝试的代码是:

Sub GetQuote()

Dim IE As Object

Set IE = CreateObject("InternetExplorer.Application")

IE.navigate ("website")

IE.Visible = True

Do
DoEvents
Loop Until IE.readystate = 4

Dim e
Set e = IE.document.getElementsByClassname("id of button")(1)
e.Click

Application.Wait (Now + TimeValue("00:00:02"))

Do
DoEvents
Loop Until IE.readystate = 4

Dim z As Object

Set z = IE.document.getElementbyid("vehicleYearOfManufactureList")
z.SelectedIndex = 4

End Sub

这用于使用值2012填充第一个下拉列表,但现在我只是在需要对象时遇到运行时错误。可能是因为之前点击的链接曾经在同一个当前窗口中打开,现在它以某种方式打开一个全新的窗口?我只是对相同的代码如何工作感到困惑,然后不起作用,假设它没有对它引用的源代码进行任何更改。

在此错误的调​​试中突出显示的行是:Set z = IE.document.getElementbyid(“vehicleYearOfManufactureList”)。根据我在下面发表的评论,它是“运行时424:对象”所需的错误

1 个答案:

答案 0 :(得分:0)

你可以通过几种方式做到这一点。如果您知道该项目的索引,则可以使用<select>元素的SelectedIndex属性直接设置该索引。在您的情况下,"2012"是下拉列表中的第4项:

Set e = IE.document.getElementbyid("vehicleYearOfManufactureList")
e.SelectedIndex = 4

或者,您可以迭代下拉列表中的所有<option>元素,找到您要查找的值,然后将其Selected属性设置为True

Set e = IE.document.getElementbyid("vehicleYearOfManufactureList")

Dim o
For Each o In e.Options
    If o.Value = "2012" Then
        o.Selected = True
        Exit For
    End If
Next