2017-02-19 3 views
0

Я новый в VBA DOM, и я пытаюсь выбрать конкретную опцию на веб-странице. К сожалению, этот параметр имеет идентификационное имя, которое совпадает с другим вариантом на странице, за исключением значения внутренней функции. здесь веб-код:Изменить значение в опции onlick web page с помощью vba (IE 11)

<table class="stati_check" id="ctl00_NetSiuCPH_ctl25"> 
<tr> 
<td> 
<span class="check"> 
<INPUT onclick="if (!boxWorkflow_rbSelect(this)) return;setTimeout('__doPostBack(\'ctl00$NetSiuCPH$ctl25$ctl00$WorkflowState\',\'\')', 0)" tabIndex=0 
id=ctl00_NetSiuCPH_ctl25_ctl00_WorkflowState type=radio 
value=ONVALIDAPROOF name=ctl00$NetSiuCPH$ctl25$ctl00$WorkflowState> 
</span> 
<td> 
<span class="check"> 
<INPUT onclick="if (!boxWorkflow_rbSelect(this)) return;setTimeout('__doPostBack(\'ctl00$NetSiuCPH$ctl25$ctl01$WorkflowState\',\'\')', 0)" tabIndex=0 
id=ctl00_NetSiuCPH_ctl25_ctl01_WorkflowState type=radio 
value=ONANNULA1 name=ctl00$NetSiuCPH$ctl25$ctl01$WorkflowState> 
</span> 
</td> 
</tr> 
</table> 

Как можно видеть два ID те же так, когда я запускаю строку кода VBA:

Set pdr_button = ie.Document.getElementById("ctl00_NetSiuCPH_ctl25_ctl00_WorkflowState").click 

Он будет выбран только первый вариант, но я Я пытаюсь выбрать те, которые имеют значение «ONANNULA1». Я попытался с REMOVE/setatribute:

Set Annulla_Button = ie.Document.getElementById("ctl00_NetSiuCPH_ctl25_ctl00_WorkflowState") 
Annulla_Button.removeAttribute ("value") 
Annulla_Button.setAttribute ("value"), "ONANNULLA1" 
Annulla_Button.Click 

Однако результат в том, что ничего не будет выбран.

Может кто-нибудь мне помочь. заранее спасибо за терпение вам

+0

вы попробуйте: Set Annulla_Button = ie.Document.getElementById ("ctl00_NetSiuCPH_ctl25_ctl00_WorkflowState") (1) – h2so4

+0

@ h2so4 - getElementById не возвращает набор элементов, он возвращает один элемент. –

+0

Сначала попробуйте выбрать таблицу, а затем верните все теги ввода в таблице и проверьте значение. Например. 'set elements = ie.document.getelementByID (" ctl00_NetSiuCPH_ctl25 "). getElementsByTagName (" input ")' затем повторяет сборку элементов, чтобы найти, когда это значение является тем, что вы хотите. –

ответ

0

Так что полоса кода: `

Set TABELLA_STATI = ie.Document.getElementById("ctl00_NetSiuCPH_ctl25").getElementsByTagName("TR") 
For Each tr In TABELLA_STATI 
Set coltd = tr.getElementsByTagName("TD") 
For Each td In coltd 
Set option_Button = td.getElementsByTagName("INPUT") 
Option_Value = option_Button(0).Value 
If InStr(1, Option_Value, "ONANNUL") > 0 Then 
option_Button(0).Click 
Exit For 
End If 
Next td 
Next tr 

`