Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 取消选中IE中的复选框_Vba_Excel_Internet Explorer_Checkbox - Fatal编程技术网

Vba 取消选中IE中的复选框

Vba 取消选中IE中的复选框,vba,excel,internet-explorer,checkbox,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">

我正在尝试使用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代码存根:

    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

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

复选框是否是表单的一部分?嘿!!我正在编辑我找到的问题。我想我再添加一点html可能会有助于解决这个问题。为什么不用某些字符串值替换和呢?这将提高可读性,这是令人困惑的,因为实际上是错误的语法。@Omegas我明白,但为什么要使用随机字符串呢。最好选择占位符。由于一些隐私政策,我无法放置真实的。不管怎样,你可以很好地考虑ID1、C1、NAME1以适合你自己。谢谢你的提示!是的,它有标签和输入元素的事件。那我就得研究它们了。如果这些事件是真正的罪魁祸首,我会回来投票,作为必要的答案