【问题标题】:Clicking an input checkbox in internet explorer在 Internet Explorer 中单击输入复选框
【发布时间】:2015-07-28 19:03:05
【问题描述】:

如果用户在 MsgBox 弹出窗口中单击“是”,我试图在 Internet Explorer 输入复选框上简单地选中“是”,或者如果用户在 MsgBox 上单击“否”,则不执行任何操作。无论我尝试什么,代码似乎都没有点击我希望它点击的按钮。

我的代码如下:

strPrompt = "Please look to see if this client has a valid brokerage account available for enrollment. Would you like to enroll this client in FRT service and submit a ticket?"
strTitle = "User Input Required"



iRet = MsgBox(strPrompt, vbYesNo, strTitle)
    If iRet = vbYes Then
        Enrollment_Button = objIE.document.getElementsById("classActionFlagReq")
        Enrollment_Button.Value = "Y"
    Else
        MsgBox "No"
    End If

我还将包含包含“是”和“否”按钮的 HTML 源代码:

<SPAN class=radio2>
<input name="classActionFlagReq" class="radio2" type="radio" value="Y"></input>
</span>
<SPAN class=radio2>
<input name="classActionFlagReq" class="radio2" type="radio" value="N"></input>
</span>

我哪里出错了? 更新编辑代码:

iRet = MsgBox(strPrompt, vbYesNo, strTitle)
    If iRet = vbYes Then
        Set Enrollment_Button = objIE.document.getElementById("classActionFlagReq")
        Enrollment_Button.Checked = True
    Else
        MsgBox "No"
    End If

【问题讨论】:

    标签: html vba excel internet-explorer input


    【解决方案1】:

    您遇到了一些问题。

    1. getElementById(),不是getElementsById()
    2. getElementById() 返回一个对象。使用Set

      Set Enrollment_Button = objIE.document.getElementById("classActionFlagReq")
      
    3. 使用Checked 属性设置复选框或单选按钮,而不是Value="Y"

      Enrollment_Button.Checked = True
      
    4. 您对两个单选按钮使用相同的name,这很好(这就是您定义单选“组”的方式)但如果您想访问单个单选按钮(以便您可以选择它),您需要分配一个唯一的 ID(或使用不同的选择器方法,例如 getElementsByName)。

    【讨论】:

    • 我刚刚对OP的底部进行了更改。它仍然没有检查任何框。我应该在变量末尾添加 (0) 来指定第一个变量吗?
    • 尝试分配一个id 属性,看看你的脚本是否能找到它。我想你会得到一个错误。你没有声明On Error Resume Next,对吧?
    • 只需将id="mytest" 添加到您的&lt;input&gt; 元素之一,然后使用getElementById("mytest")
    • 你说得对,我确实启用了错误处理程序。我刚刚禁用它,错误将我带到“Enrollment_Button.Checked = True”语句,告诉我该对象不支持此属性或方法。不幸的是,我不确定将 ID 属性分配给变量是什么意思。我是 VBA 新手。我用谷歌搜索了这个并没有找到太多。
    • 尝试使用特定的 ID,如上所述。 Checked = True 应该可以工作。请参阅文档以获取单选按钮 here
    【解决方案2】:

    nameid 属性不可互换。您没有任何 id 等于“classActionFlagReq”的元素,因此 getElementsById 找不到任何元素。

    请注意,id 是唯一的,因此您不能像使用 names 那样将两个 inputs 设置为相同的 id

    【讨论】:

    • 实际上,IE 会自动为所有命名元素创建 ID,所以他应该没问题(即使是偶然的)。
    • 所以我只是将代码更改为 "Enrollment_Button = objIE.document.getElementsByName("classActionFlagReq")" 但我仍然没有运气。关于这个有什么想法吗?
    【解决方案3】:
    Set ieRadio = objIE.document.all
    ieRadio.Item("classActionFlagReq")(1).Checked = True
    

    这解决了我的问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多