我在自动化工作的一部分中遇到了问题,那就是使用 VBA 和 IE 在网页上的组合框中选择所有选项。
此代码在组合框中选择一个项目
Set frm = HTMLDoc.getElementsByName("UFG.USER_TYPES")(0)
frm.Value = "AUT"
但是,当我尝试选择多个项目时,它只会选择最后一个项目,而不是全部。
这是网页上的代码
<p id="DispFormCollapsible.Rc10"class="formrow" >
<span id="DispFormCollapsible.Rc10.C1" class="querytextleft">
<label for="UFG.USER_TYPES" id="LabelForContro123"class = "simpletext" >
Accessible Types:<span class="redstar">*</span></label></span>
<span id="DispFormCollapsible.Rc10.C2" class="querytextright">
<span class="labelColumn_combo">
<span class="labelColumn_combi_brdr">
<select name= "UFG.USER_TYPES" multiple= "true" class = "dropdownexpandalbe"
id="UFG.USER_TYPES" title = "Accessible Financial Transaction Types">
<option value="AUT" title="ACTIVE USER TYPE1" >TYPE1</option>
<option value="SET" title="Selective User Type" >TYPE2</option>
<option value="TST" title="Test User Type" >TEST3</option>
</select></span></span>
<input type ="hidden" name= "UFG.USER_TYPES" value="NULL" >
</span></p>
这是我的VBA行来选择一个项目
Set frm = HTMLDoc.getElementsByName("UFG.USER_TYPES")(0)
frm.Value = "AUT"
我需要它做的是选择组合框中的所有"选项值"。 我认为它可能需要是一个数组,或者其他方式。 我尝试过搜索,但我一无所获。 任何帮助表示赞赏。感谢
已尝试以下操作,但出现错误91块未设置。 我还尝试在孩子中使用值"AUT",这样做时我没有收到错误,但它没有选择任何东西。
With HTMLDoc.getElementsByName("Select")(0)
.Children(1).Selected = True
.Children(2).Selected = True
.Children(3).Selected = True
End With
还尝试了以下方法,这不会给出错误,而只会选择列表中的第一个选项。
With HTMLDoc.getElementsByName("UFG.USER_TYPES")(0)
.Children(AUT).Selected = True
.Children(SET).Selected = True
.Children(TST).Selected = True
End With
这很奇怪,当我使用此代码时,它会选择列表中的前两个,而不是第三个。
With HTMLDoc.getElementsByName("UFG.USER_TYPES")(0)
.Children(all).Selected = True
End With
With HTMLDoc.getElementsByName("UFG.USER_TYPES")(0)
.Children(0).Selected = True
.Children(1).Selected = True
.Children(2).Selected = True
End With
上面的代码修复了它...嗖!