2016-06-09 74 views
0

我想使用来自命名tabel的值填充组合框。我一直在挣扎,设法想出下面的代码:如何使用查找表来填充组合框

Dim Arr() As Variant 
Arr = Range("SourceTable") 
SourceBox.List = Arr 

这与填充从表sourceTable会,其中存在2列的第1列中的值组合框。我有以下问题:

  • 有什么可比的,如HTML(我来自一个Webdev的背景),你可以设置一个元素的名称,并存储在不同的价值呢?
  • 有没有办法存储第二列,而不是像上面的代码中的第一列?
  • 你会如何重构这个代码,因为它看起来像填充一个组合框

感谢

+0

可能像范围( “sourceTable会”)。列(2).Range? – pintxo

回答

2

您正在使用ActiveX组合框对象支持多列的弯路。它默认为一个。列的宽度也可以设置。所以你想要做的是将其设置为使用两列,然后设置它们的宽度以隐藏第一列并显示第二列。喜欢的东西:

Sub loadcombo() 
    Dim Arr() As Variant 
    Arr = Range("SourceTable") 
    SourceBox.ColumnCount = 2 
    SourceBox.ColumnWidths = "0;1" 
    SourceBox.List = Arr 
End Sub 

然后你可以使用组合框的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 
+0

不错,看起来不错。明天去试试。你有什么好的资源来了解这些操作? –

+0

什么都不是我的头顶,但我总是发现MSDN非常有用。它通常给出对所有对象的方法和参数以及关系等的很好的解释。 – JNevill

+0

我实际上有需要在第1列中显示的文本和在第2列中的值。所以我尝试了SourceBox.ColumnWidths =“1; 0”,但这不起作用,因为它然后在调试中显示两次文本。打印。有什么方法来分配或告诉组合框使用哪个列? –

0

最简洁的方式来得到第二列将是类似

SourceBox.List = Range("SourceTable[Column2]").Value 

我不太清楚你的意思是通过设置名称和存储的价值。你可以使用字典,你可以使用内置的名字集合来处理这些事情,尽管你需要澄清。

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。通过名称识别组合框(当您将鼠标移到HTML代码上时它将被突出显示)或ID(0,1,2等)。然后,只需将值直接传递给组合框。

试试看看它是怎么回事。

最后,如果F12没有做任何事情,请下载并安装IE工具栏。

https://www.microsoft.com/en-us/download/details.aspx?id=32987