vba - 取消选中 IE 中的复选框

标签 vba excel internet-explorer checkbox

我正在尝试使用 Excel VBA 取消选中网页上已选中的复选框。

HTML 代码:

<div class="mycheckbox checked">
<label class="mycheckbox1 checked" data-initialize="checkbox">
    <input name=<name> class=<class> id=<id> type="checkbox" checked="checked"></input></label></div>

VBA 代码 stub :

    Public Sub uncheck(IE As Object)
    Dim Element As Object
        With IE.Document
            Set Element = .getElementById(<id>)
            Element.Checked = False
            Element.defaultChecked = False        
        End With
    End Sub

这不会按预期工作,因为 HTML 代码更改为 -

<div class="mycheckbox checked">
<label class="mycheckbox1 checked" data-initialize="checkbox">
    <input name=<name> class=<class> id=<id> type="checkbox" checked=""></input></label></div>

该复选框并未取消选中,因为仍然存在选中的属性

甚至尝试了以下操作(单击复选框)。它根本没有做任何事情 -

    Public Sub uncheck(IE As Object)
    Dim Element As Object
        With IE.Document
            Set Element = .getElementById(<id>)
            Element.Click
        End With
    End Sub

有什么建议吗?或者我可以知道为什么我的方法不起作用吗?

最佳答案

如果我们可以取消选中该复选框,这里是允许进行常见测试的代码:

Public Sub TestIE()
    Dim IE As Object
    Dim Element As Object
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.Navigate "about:blank"
    IE.document.write "<html><body><input name=""chkbx_name"" class=""chkbx_cls"" id=""chkbx"" type=""checkbox"" checked=""checked""></body></html>"
    IE.document.parentWindow.alert "Verify checkbox is checked"
    Set Element = IE.document.getElementById("chkbx")
    Element.Checked = False
    IE.document.parentWindow.alert "Verify checkbox is unchecked"
    IE.Quit
End Sub

对我来说,它按预期工作:显示选中的复选框和第一个警报,然后取消选中它并显示第二个警报。如果您的网页以其他方式工作,那么通过开发人员工具检查网页上的复选框是否有一些 onclickonchange 事件处理程序是值得的。在 IE 中,按 F12,单击DOM Explorer,选中 HTML 代码中的复选框,单击事件选项卡。如果有任何事件处理程序,那么您必须澄清它是否修改了复选框的状态(在您的 VBA 修改之后立即)。

关于vba - 取消选中 IE 中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30965281/

相关文章:

javascript - IE11对象不支持属性或方法'Symbol(Symbol.iterator)_a.2p3bca3ct9h

html - Internet Explorer 中的溢出表错误

excel - 制作一个可搜索的组合框来替换没有辅助列的数据验证

VBA在循环中格式化数字以进行条件格式化

VBA根据2个标准将行从一张纸复制到另一张纸

arrays - Excel VBA - 如何使用单个命令从 3D 矩阵复制 2D 矩阵内容?

excel - AWS 数据湖摄取

excel - 关闭有关剪贴板上大量数据的警告消息

excel - VBA Excel - 将 Enter 键替换为 Alt Enter

javascript - 为什么在 IE 上多次声明 className 会破坏应用程序?