我正在尝试使用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,但对我来说也没有锻炼。
答案 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