【问题标题】:Value not getting updated in IE when trying to change it using VBA尝试使用 VBA 更改值时未在 IE 中更新值
【发布时间】:2019-05-20 03:58:09
【问题描述】:

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

【问题讨论】:

    标签: html vba internet-explorer


    【解决方案1】:

    您也可以尝试以下这些选项:

    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
    

    【讨论】:

    • 非常感谢,选项 2 也对我有用。太棒了!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      相关资源
      最近更新 更多