【问题标题】:Set combo box by name按名称设置组合框
【发布时间】:2018-01-04 11:58:25
【问题描述】:

使用 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 选择“香蕉”选项,如下所示:

getElementById("fruits").value = 2

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

【问题讨论】:

    标签: vba internet-explorer combobox automation


    【解决方案1】:

    “香蕉”不是 HTML 属性,而是标签之间的文本。 您可以遍历所有元素并使用选项标签,然后选择具有所需内部文本的元素。在下一步中,您可以从 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 有两位数,您将调整我的代码。

    【讨论】:

    • 这实际上是一个非常简单的解决方法。你是对的,上面是一个例子,但实际问题非常相似,只是更难阅读:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多