我写一个Excel宏来填写表格在网站上。 我写了填充文本框容易够代码,发现代码来选择单选框,但我有选择从下拉菜单信息的问题。
实施例“性别”:
组合框有三个选项:
Select / Male / Female
我试着在这几个变化:
doc.getElementsByName("xs_r_gender").Item(0).Value="Male"
...但没有运气。
这是网络的源代码:
<td> <select name="xs_r_gender" id="xs_r_gender">
<option value="" selected>Select</option>
<option value="male">Male</option>
<option value="female">Female</option> </select></td>
谢谢。
Answer 1:
doc.getElementById("xs_r_gender").selectedindex=1
似乎这样的伎俩。 (其中1表示男性)
虽然这意味着我需要做很多的查找,以确定哪些值是在我的下拉列表中的项目。 (易够性别,那里只有两个选择,但我有一些组合框多达50选项)。 如果任何人更快的解决方案的人都知道,那简直太好了。 在此期间,伊利诺伊州开始做了一些表!
谢谢。
Answer 2:
尝试下面的代码假定文档= ie.document
doc.getElementById("xs_r_gender").value = "Male"
Answer 3:
使用这个在你的代码中调用下面的函数。
xOffset = SetSelect(IE.Document.all.Item("shipToStateValue"), "Texas")
doc.getElementById("shipToStateValue").selectedindex = xOffset
然后用这个你的函数
Function SetSelect(xComboName, xComboValue) As Integer
'Finds an option in a combobox and selects it.
Dim x As Integer
For x = 0 To xComboName.options.Length - 1
If xComboName.options(x).Text = xComboValue Then
xComboName.selectedindex = x
Exit For
End If
Next x
SetSelect = x
End Function
Answer 4:
由于协议栈,对我的作品! 我的解决方案,以降低操作的IE HTML组合框下拉竟然是两个部分。
第1部分是点击下拉,这里的代码:
Dim eUOM1 As MSHTML.HTMLHtmlElement
Set eUOM1 = ie.document.getElementsByTagName("input")(27).NextSibling
eUOM1.Focus
eUOM1.Click
第2部分是选择和点击的价值,像这样(*实际的元素名称变更):
Dim eUOM2 As MSHTML.HTMLHtmlElement
Set eUOM2 = ie.document.getElementsByName("[*PutNameHere]")(0)
eUOM2.Value = "EA"
eUOM2.Click
下面是引用: 裁判
Answer 5:
你可以尝试querySelector
的方法document
应用的CSS选择器option
与属性标记value = 'male'
:
doc.querySelector("option[value='male']").Click
要么
doc.querySelector("option[value='male']").Selected = True
Answer 6:
Function SetSelect(s, val) As Boolean
'Selects an item (val) from a combobox (s)
'Usage:
'If Not SetSelect(IE.Document.all.Item("tspan"), "Custom") Then
'something went wrong
'Else
'continue...
'End If
Dim x As Integer
Dim r As Boolean
r = False
For x = 0 To s.Options.Length - 1
If s.Options(x).Text = val Then
s.selectedIndex = x
r = True
Exit For
End If
Next x
SetSelect = r
End Function
Answer 7:
试试这个代码:
doc.getElementById("xs_r_gender").value = "Male"
doc.getElementById("xs_r_gender").FireEvent("onchange")
Answer 8:
你可以这样做:
doc.getElementsByName("xs_r_gender").Item(1).Selected=True
要么
doc.getElementById("xs_r_gender").selectedindex = 1
其中,1是男性选项(在这两种情况下)。
如果Dropbox的需求,以aknowledge您选择到必须解雇一些事件,很可能这将是“的onchange”事件。 您可以启动它,如下所示:
doc.getElementById("xs_r_gender").FireEvent("onchange")
如果你希望能够选择基于期权的文字,你可以使用Lansman(给定功能的选项这里 )。 基于相同的答案,如果你要拨打的选项,通过它的价值属性(而不是文本,你可以改变线路If xComboName.Options(x).Text = xComboValue Then
到If xComboName.Options(x).value = xComboValue Then
)。
这应涵盖所有基地。
Answer 9:
从这里到最后一行复制:
Sub Filldata()
Set objShell = CreateObject("Shell.Application")
IE_count = objShell.Windows.Count
For X = 0 To (IE_count - 1)
On Error Resume Next ' sometimes more web pages are counted than are open
my_url = objShell.Windows(X).document.Location
my_title = objShell.Windows(X).document.Title
If my_title Like "***Write your page name***" Then
Set IE = objShell.Windows(X)
Exit For
Else
End If
Next
With IE.document.forms("***write your form name***")
' Assuming you r picking values from MS Excel Sheet1 cell A2
i=sheet1.range("A2").value
.all("xs_r_gender").Item(i).Selected = True
End with
End sub
文章来源: Using excel vba to change the value of a dropdown menu on a website