如何永久更改下拉值

时间:2017-10-11 10:11:09

标签: excel vba internet-explorer

当我试图为我的公司创建一个自动化时,我遇到了困难,我无法超越。我在这个和其他网站上看了很多文章,但我没有找到答案。

所以基本上我有一个下拉列表,点击我公司使用的互联网应用程序。用户必须将值从“读取”更改为“全部”10个位置。然后应用程序确认更改并允许保存表单。

当我设法编写一个代码,点击特定字段以激活下拉列表,并从此下拉列表中选择正确的选项。然而,当我循环通过所有这10个下拉列表时,效果不明显。

有一个有趣的部分。每当我在“debug.print objinputs.outerHTML”上放置一个断点然后允许宏继续进行更改就会发生并且一切都很好。但是没有断点就会出现问题,并且所有的值都会回到“读取”状态。有谁知道这里可能是什么问题?

如果您需要更多信息,请告诉我。

    Set ifrm = Nothing
    Do Until ifrm.Length > 0
        Set ifrm = IE.Document.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("iframe")(1).contentDocument.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("tbody")(znacznik - 1).Document.getElementsByTagName("td")
    Loop
    Counter = 1
    For Each ele In ifrm
        Worksheets("Test").Cells(Counter, 1) = ele.outerHTML
        Counter = Counter + 1
        If InStr(ele.outerHTML, "<td title=" & Chr(34) & "Read") Then
            ele.Click
            Do Until Not ele.Busy And ele.readyState = READYSTATE_COMPLETE: Loop

            Set objInputs = Nothing
            Set objInputs = IE.Document.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("iframe")(1).contentDocument.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("iframe")(0).contentDocument.getElementsByTagName("tbody")(znacznik - 1).Document.getElementsByTagName("select")(3)

            objInputs.Value = "All"
            Debug.Print objInputs.Value

            Do Until Not IE.Busy And IE.readyState = READYSTATE_COMPLETE: Loop

        End If
    Next

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 它不是最优雅的,但它的工作原理足以满足我的需求。

我添加了

  CreateObject("WScript.Shell").Popup "Just Wait", 1, "Waiting"
价值变化之后

它就成功了。我很想知道为什么会这样,为什么这个“技巧”解决了这个问题。