2017-10-11 72 views
0

正如我试图为我的公司创建自动化一样,我偶然发现了难以逾越的难题。我已阅读了许多关于此网站和其他网站的文章,但我没有找到答案。如何永久更改下拉值

因此,基本上我有一个下拉列表触发点击我的公司使用的互联网应用程序。用户必须将值从“读取”更改为“全部”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 

回答

0

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

我已经值变更后加入

CreateObject("WScript.Shell").Popup "Just Wait", 1, "Waiting" 

,它的伎俩。我很想知道为什么会发生这种情况,为什么这个“伎俩”能够解决这个问题。