2017-10-11 117 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" 

,它的伎倆。我很想知道爲什麼會發生這種情況,爲什麼這個「伎倆」能夠解決這個問題。