尝试使用VBA更改IE中的值时未更新

时间:2019-05-19 18:04:29

标签: html vba internet-explorer

我正在尝试使用VBA更改IE中某个字段的下拉值,但该值在IE中没有得到更新。

下面是我的代码:

IE.Document.getelementbyid("ddlSchemeCategory").Value = "MANAGE CASH"
Set objButton = IE.Document.getelementbyid("ddlSchemeCategory")
objButton.Focus
objButton.Click

我要更改的字段的HTML代码:

<div class="selectbg">
  <div class="selectedvalue" id="divscat">All Categories</div>
    <select name="ddlSchemeCategory" tabindex="4" class="ddlSchemeCategory" id="ddlSchemeCategory" style="display: inline-block;">
      <option value="-1">All Categories</option>
      <option value="CREATE WEALTH">CREATE WEALTH</option>
      <option value="MANAGE CASH">MANAGE CASH</option>
      <option value="NFO">NFO</option>
      <option value="STABLE INCOME">STABLE INCOME</option>
      <option value="RETIREMENT">RETIREMENT</option>
      <option value="SAVE TAX">SAVE TAX</option>
    </select>                              
</div>

我也尝试过使用SelectIndex,但对我来说也没有锻炼。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用attribute = value选择器更改选项,然后使用FireEvent进行更改。您还可以考虑将change event附加到select元素上。

ie.document.querySelector("[value='CREATE WEALTH']").Selected = True
ie.document.querySelector("#ddlSchemeCategory").FireEvent "onchange"

答案 1 :(得分:0)

您也可以在下面尝试以下选项:

Sub firstOption()


Dim slct As HTMLSelectElement
Set slct = ie.document.getElementById("ddlSchemeCategory")
Dim opt


For Each opt In slct.getElementsBytagname("option")
    If opt.Value = "CREATE WEALTH" Then 'CREATE WEALTH sample value to be selected
        opt.Selected = True
        slct.fireevent "onchange"
        Exit For
    End If
Next opt

End Sub


Sub secondOption()


Dim slct As HTMLSelectElement
Set slct = ie.document.getElementById("ddlSchemeCategory")
Dim opt

Dim evt
Set evt = ie.document.createEvent("HTMLEvents")
evt.initEvent "change", True, False
For Each opt In slct.getElementsBytagname("option")
    If opt.Value = "CREATE WEALTH" Then
        opt.Selected = True
        slct.dispatchEvent evt
        Exit For
    End If
Next opt

End Sub