2013-03-12 24 views
5

我在Access窗體上有一個兩列組合框,代表一個密鑰到代碼的映射。組合框的第一列是「綁定列」(即調用MyComboBox.Value時使用的列)。訪問VBA:查找基於非綁定列的組合框中的項目

我需要根據第二列中的值動態設置組合框的Value。對於例如,如果我的組合框源:

我能通過第二列設置組合框的值,簡單地用ComboBox.Value = "A2",但我會怎麼做? ComboBox.Value = "EFGH"顯然無效。從本質上講尋找沿ComboBox.Value = ComboBox.ValueWhereSecondColumnEquals("EFGH")

回答

5

,並假設它不是基於表/查詢:

Dim i As Integer 

For i = 0 To ComboBox.ListCount-1 
    If ComboBox.Column(1, i) = "EFGH" Then 
     ComboBox.Value = ComboBox.ItemData(i) 
     Exit For 
    End If 
Next i 
+1

'到ListCount-1' :)我正要添加這個。 – Fionnuala 2013-03-12 16:44:57

+0

好點!改變:) – RichardC 2013-03-12 16:52:55

+0

有時最好的答案是最簡單的 - 不能相信只是循環它永遠不會跨越我的腦海! – Kai 2013-03-13 10:00:28

3

假設你的組合是基於錶行的邏輯,你可以在表中使用DLookup值:

ComboBox.Value = Dlookup("Value","Table","Code='" & sCode & "'") 
+0

這也適用。它目前不是基於表格,但可能會在某點 – Kai 2013-03-13 10:01:33

+0

Kai,除非你有很少的值,並且我很少意味着2或3,它應該基於表格以方便維護和使用在報告和查詢。 – Fionnuala 2013-03-13 10:12:47

+0

我知道 - 整個事情後來會被後端支持到SQL Server,但此刻我正在等待提供一個完整的映射列表,並且只是將UI設計(零後端)組合起來以顯示客戶端最初的反饋。 – Kai 2013-03-13 10:36:50

0

如果源是在一個組合框選擇的值,並且目標是一個未綁定的組合框的目標組合框的.BoundColumn屬性設置到相應的列,然後只分配組合框的值通常,如在CBOX = cboY。即使目標組合框已綁定,您也可以根據需要動態更改綁定列。

相關問題