html - 下拉列表依赖于 IE 中的其他下拉列表并且不更新 vba
问题描述
我正在使用 VBA 来自动化 IE。我有两个下拉列表(我们称它们为“A”和“B”)。B 列表取决于 A 列表的值,因此 B 列表不会显示其值,除非我先手动选择 A 列表值。我试过这个:
Sub pifa ()
Dim ie As Object
Set ie = CreateObject("internetexplorer.application")
With ie
.Visible = True
.navigate "https://serviciosjava2.pifa.gob/rcel/jsp/index_bis.jsp"
Do While .Busy
DoEvents
Loop
Do While .readyState <> 4
DoEvents
Loop
ie.document.getElementById("puntodeventa").Value = "31" 'A list value
Do While .Busy
DoEvents
Loop
Do While .readyState <> 4
DoEvents
Loop
ie.document.getElementById("universocomprobante").Value = "19" 'B list value (doesn't work)
End with
End sub
对于 A 列表值,一切正常,它会正确更改下拉列表值,但由于我实际上并未手动单击该值,因此 B 列表不会更新并显示这些值。我也试过这个,但不起作用:
ie.document.getElementById("puntodeventa").Click 'A list value
“A”列表代码:
<select name="puntoDeVenta" onchange="actualizarDescripcionPVConDelay(this.selectedIndex);ajaxFunction();" id="puntodeventa">
<option value="" selected="selected" style="color:#888;" onclick=document.getElementById("desc_pto_vta").innerHTML="";>seleccionar...</option>
<option value="31"> puntodeventaseleccionado</option>
</select>
“B”列表代码:
<select name="universoComprobante" onchange="actualizarDescripcionTC(this.selectedIndex);" id="universocomprobante">
<option value="" selected="selected" style="color:#888;">seleccionar...</option>
<option value="10">Factura A</option> 'this appears when I click manually the A list
<option value="19">Factura B</option> 'this appears when I click manually the A list
</select>
解决方案
如果您检查 HTML 代码,那么您会注意到两个下拉控件都有onchange事件。
设置值后,您需要从 VBA 代码中触发 onchange 事件可能有助于解决问题。
触发 onchange 事件的示例代码。
Set ieEvent = htmldoc.createEvent("HTMLEvents")
ieEvent.initEvent "change", False, True
ie.document.all.Item("puntoDeVenta").dispatchEvent ieEvent
推荐阅读
- django - Google Storage 一次为多个对象创建签名 url
- c# - 构建到 WebGL 失败(无法编译 firebase)
- laravel - 来自 Vue.js 的 Laravel API 调用导致 GET 路由的 CORS
- r - R html 文档中未显示的绘图
- c++ - 此代码失败,但为什么呢?返回整数指针的内存地址
- c# - 素数分解如何保证因子是素数?
- java - 读取文本文件的第一行并将其存储到数组列表中
- python-3.x - 在 macOS Catalina 中使用 pip install apache-airflow 安装气流时出错
- java - OutOfMemoryError:请求的数组大小超过了 apache camel 中的 VM 限制
- php - 如何使用 Laravel Envoy 运行 SSH 命令