我正在尝试使用来自命名表格的值填充组合框。我一直在努力并设法提出以下代码:
Dim Arr() As Variant
Arr = Range("SourceTable")
SourceBox.List = Arr
这将使用表SourceTable的第1列中的值填充组合框,该表存在2列。我有以下问题:
由于
答案 0 :(得分:2)
您使用的ActiveX组合框对象支持多列。它默认为1。列也可以设置其宽度。所以你想要做的是将它设置为使用两列,然后设置它们的宽度以隐藏第一列并显示第二列。类似的东西:
Sub loadcombo()
Dim Arr() As Variant
Arr = Range("SourceTable")
SourceBox.ColumnCount = 2
SourceBox.ColumnWidths = "0;1"
SourceBox.List = Arr
End Sub
然后,您可以使用comboBox的value
属性获取第一个隐藏列及其text
属性,以获取您要显示的第二列:
Private Sub SourceBox_Change()
'subroutine to fire on combobox change event
'print the value (hidden) and the text (shown) to debugger for fun and profit
Debug.Print SourceBox.Value, SourceBox.Text
End Sub
答案 1 :(得分:0)
获得第二列的最简洁方法是
SourceBox.List = Range("SourceTable[Column2]").Value
通过设置名称和存储值,我不太清楚你的意思。您可以使用词典,虽然您需要澄清,但您可以使用内置名称集合进行澄清。
答案 2 :(得分:0)
它应该是这样的。
Sub passValueToComboBox1()
Dim ie As Object
Dim oHTML_Element As IHTMLElement
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "http://your_URL_here.php"
While ie.Busy Or ie.readyState <> 4: DoEvents: Wend
Set oHTML_Element = ie.document.getElementsByName("selectedReportClass")(0)
If Not oHTML_Element Is Nothing Then oHTML_Element.Value = "FUBU7"
For Each oHTML_Element In ie.document.getElementsByTagName("input")
If oHTML_Element.Type = "submit" Then oHTML_Element.Click: Exit For
Next
End Sub
最简单的方法是点击键盘上的F12,这样你就可以看到页面背后的HTML。按名称标识ComboBox(当您将鼠标悬停在HTML代码上时将突出显示)或ID(0,1,2等)。然后,只需将值直接传递给ComboBox。
试一试,看看它是怎么回事。
最后,如果F12没有做任何事情,请下载并安装IE工具栏。
https://www.microsoft.com/en-us/download/details.aspx?id=32987