按名称设置组合框

时间:2018-01-04 11:58:26

标签: vba internet-explorer combobox automation

使用VBA自动处理Internet Explorer时,可以按组件值选择组合框中的项目。如果我们的组合框HTML看起来像这样:

<select name="my_combo_box" id="fruits">
    <option value="1">Apple</option>
    <option value="2">Banana</option>
    <option value="3">Strawberry</option>
</select>

然后您可以使用VBA选择“Banana”选项,如下所示:

getElementById("fruits").value = 2

但是有没有办法用它的名字(显示成员)选择它,即 Banana

1 个答案:

答案 0 :(得分:1)

&#34;香蕉&#34;不是HTML属性,而是标记之间的文本。 您可以遍历所有元素并使用选项标记,然后选择具有所需innerText的元素。在下一步中,您可以从innerHTML中删除id。喜欢:

Sub MyMacro()
Dim opt As IHTMLElement
Dim iComboBox As IHTMLElement
Dim sID As String

For Each opt In iComboBox.getElementsByTagName("option")
    If InStr(opt.innerHTML, "Banana") Then
        sID = CutId(opt.innerHTML)
    End If
Next opt

End Sub


Function CutId(s As String) As String
Dim s As String

s = Mid(s, InStr(s, "=") + 2, 1)
CutId = s

End Function

然后您可以使用sId来选择项目。我想你的HTML只是示例,所以你可能需要调整CutId函数,这只是我的求解方案。特别是,如果您希望id有两位数,您将调整我的代码。