2016-03-08 123 views
0

我正在嘗試設置下拉框的值,並顯示一個甚至不是選項的空白。VBA無法通過選擇下拉菜單獲得選項

下面是HTML剪斷,它(注:內部網站,所以我不能給URL或太多)

<select id="entNo" name="entNo" style="width:75px"> 
    <option selected="selected" value="All">All</option> 
    <option value="650101">650101</option> 
    <option value="66">66</option> 

這裏是它的功能。

function requestEntities() 
    { 
     var ele = document.getElementById('entNo'); 
     if (ele) { 
      ele.options.length = 0; 
      ele.options[0] = new Option('All'); 
      ele.disabled = true; 
      ele = document.getElementById('divNo'); 
      if (ele) { 
       var i = ele.selectedIndex; 
       var div = ele.options[i].value; 
       sendHttpRequest('http://example.com/cgi-bin/wspd_cgi.sh/WService=wslive//wpr/entityList.r?div=' + div); 
      } 
     } 
    } 

我使用VBA代碼是這樣的:

Set objCollection = ie.document.getElementsByTagName("select") 
    'Debug.Print objCollection.Length 

    i = 1 
    While i < objCollection.Length  'Loop to locate and change the fields with proper data using the "select" tags 
     Debug.Print objCollection(i).Value 
     If objCollection(i).Name = "entNo" Then 
      If ecode <> "" Then 
      Debug.Print objCollection(i).Value 
       objCollection(i).Value = ecode 
      End If 

     ElseIf objCollection(i).Name = "curStatus" Then 
      objCollection(i).Value = "Open" 

     ElseIf objCollection(i).Name = "opStatus" Then 
      objCollection(i).Value = "All" 


     End If 
      i = i + 1 
    Wend 

我不能給更多的,因爲這是工作。我已經耗盡谷歌搜索。
另一件奇怪的事情是,當我單步執行時它會起作用。否則就無法工作。 任何建議將不勝感激。

+0

我無法獲得當前選定的值。 – user3490906

+0

如果這些select元素在某種程度上是依賴的(改變其中一個會改變下一個可用的選項),那麼你需要等待下一個填充,這就是爲什麼它在單步執行時工作,但不是如果你直接運行整個事情。 –

回答

1

忽略時間問題,現在,你的代碼會更容易爲:似乎

If ecode <> "" Then ie.document.getElementById("entNo").Value = ecode 
ie.document.getElementById("currStatus").Value = "Open" 
ie.document.getElementById("opStatus").Value = "All" 

由於您選擇的元素有ID屬性。

+0

太棒了。謝謝回答。這比我做的要乾淨得多。 – user3490906

+0

我發現我的系統有些奇怪的事情發生。我重新啓動,問題消失了。奇怪的是,但我關閉所有的應用程序,並再次嘗試,但最終歸結爲重新啓動。下次我會在發佈之前重新啓動系統。 – user3490906