尝试使用Vbscript在excel中查找数据并从HTA中的下拉列表中选择其值
我想首先补充一点,我是vbscript的新手,如果这是我缺少的一些简单的东西,那么很抱歉。我进行了搜索,但在找到正确的代码时遇到了问题(尽管这个网站帮了我很大的忙) 无论如何,我已经创建了一个HTA,您可以将数据输入表单并将其填充到excel电子表格中。如果序列号已在电子表格中,则会更新列,否则会添加新列。这一切都很好。我正在尝试添加一个子项,这样我就可以有一个搜索按钮来填充字段,这样你就可以在更新之前看到已经存在的数据。我能够填充文本框,但下拉列表无法选择匹配值。下面是填充表单的代码部分。如果我将下拉列表更改为文本输入,那么它将很好地填充。我把箭头放在失败的两行的左边,我尝试了许多不同的方法,但它们似乎都失败了。希望这一切都有意义。提前谢谢尝试使用Vbscript在excel中查找数据并从HTA中的下拉列表中选择其值,excel,drop-down-menu,vbscript,hta,Excel,Drop Down Menu,Vbscript,Hta,我想首先补充一点,我是vbscript的新手,如果这是我缺少的一些简单的东西,那么很抱歉。我进行了搜索,但在找到正确的代码时遇到了问题(尽管这个网站帮了我很大的忙) 无论如何,我已经创建了一个HTA,您可以将数据输入表单并将其填充到excel电子表格中。如果序列号已在电子表格中,则会更新列,否则会添加新列。这一切都很好。我正在尝试添加一个子项,这样我就可以有一个搜索按钮来填充字段,这样你就可以在更新之前看到已经存在的数据。我能够填充文本框,但下拉列表无法选择匹配值。下面是填充表单的代码部分。如果
Sub SearchINV()
Dim FSO, oExcel, oData, FoundCell, FindTag, FilePath, oWorkSheet
FindTag = document.all.serial.value
FilePath = "C:\file.xlsx"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oExcel = CreateObject("Excel.Application")
Set oData = oExcel.Workbooks.Open(FilePath)
oData.Worksheets("sheet1").Select
Set FoundCell = oData.Worksheets("sheet1").Range("A1:A20000").Find(FindTag)
oExcel.DisplayAlerts = False
Set FoundCell = oData.Worksheets("sheet1").Range("A1:A20000").Find(FindTag)
If Not FoundCell Is Nothing Then
Dim r, c
r = FoundCell.Row
c = FoundCell.Column
Set oWorkSheet = oData.Worksheets("sheet1")
document.getElementById("serial").value = FoundCell.Value
document.getElementById("combination").value = oWorksheet.Cells(r, c+1).Value
document.getElementById("last").value = oWorksheet.Cells(r, c+2).Value
document.getElementById("first").value = oWorksheet.Cells(r, c+3).Value
document.getElementById("department").value = oWorksheet.Cells(r, c+4).Value
---> document.getElementById("floor").value = oWorksheet.Cells(r, c+5).Value
---> document.getElementById("building").value = oWorksheet.Cells(r, c+6).Value
Else
MsgBox (FindTag & " not found")
End If
Set File_Path = nothing
Set FindTag = nothing
Set FoundCell = nothing
oData.Close
oExcel.Quit
Set oWorkSheet = Nothing
Set oData = Nothing
Set oExcel = Nothing
Set FSO = Nothing
End Sub
由于您提供的信息相当不完整,我只能给您一个关于如何填充下拉列表的一般答案 HTML中的下拉列表是
元素,下拉列表中列出的项目是
元素。HTML代码看起来有点像这样:
<select id="fruit">
<option value="green">Apple</option>
<option value="yellow" selected>Banana</option>
<option value="red">Strawberry</option>
</select>
'sample data
data = CreateObject("Scripting.Dictionary")
data.Add "green" , "Apple"
data.Add "yellow", "Banana"
data.Add "red" , "Strawberry"
'get dropdown list element
Set list = document.getElementById("fruit")
'populate dropdown list with sample data
For Each fruit In data.Keys
Set opt = document.createElement("OPTION")
opt.Text = data(fruit)
opt.Value = fruit
list.Add opt
Next
'get dropdown list element
Set list = document.getElementById("fruit")
'select matching element
For Each opt In list.Options
If opt.Text = oWorksheet.Cells(r, c+5).Value Then opt.Selected = True
Next
如果这对您没有帮助,您需要提供有关源数据、要填充的元素以及结果外观的更多信息
编辑:如果要从已填充的下拉列表中选择与Excel电子表格中给定单元格的值匹配的选项,请执行以下操作:
<select id="fruit">
<option value="green">Apple</option>
<option value="yellow" selected>Banana</option>
<option value="red">Strawberry</option>
</select>
'sample data
data = CreateObject("Scripting.Dictionary")
data.Add "green" , "Apple"
data.Add "yellow", "Banana"
data.Add "red" , "Strawberry"
'get dropdown list element
Set list = document.getElementById("fruit")
'populate dropdown list with sample data
For Each fruit In data.Keys
Set opt = document.createElement("OPTION")
opt.Text = data(fruit)
opt.Value = fruit
list.Add opt
Next
'get dropdown list element
Set list = document.getElementById("fruit")
'select matching element
For Each opt In list.Options
If opt.Text = oWorksheet.Cells(r, c+5).Value Then opt.Selected = True
Next
谢谢你的回复,似乎我需要提供更多的信息,但我不知道该如何表达。上面的代码(我相信)定义了下拉框的选项。我已经用所有选项设置了html(例如A、B、C),我正试图用上面的两行从excel文档中获取现有数据,并从下拉列表中选择匹配选项。假设我有选项A、B和C。excel文档当前在单元格中有A。当你打开HTA时,我希望它能自动在下拉列表中选择一个。这正是我所希望的。我真的很感谢你的帮助!