2016-06-09 73 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