Access VBA:根据非绑定列在组合框中查找项目
Posted
技术标签:
【中文标题】Access VBA:根据非绑定列在组合框中查找项目【英文标题】:Access VBA: Find item in combo box based on non-bound column 【发布时间】:2013-03-12 16:28:58 【问题描述】:我在 Access 表单上有一个两列组合框,表示键到代码的映射。组合框的第一列是“绑定列”(即调用MyComboBox.Value
时使用的列)。
我需要根据第二列中的值动态设置组合框的Value
。例如,如果我的组合框来源是:
Value | Code
===============
A1 | ABCD
A2 | EFGH
A3 | IJKL
我可以简单地使用ComboBox.Value = "A2"
设置组合框的值,但是如何使用第二列来设置组合框的值? ComboBox.Value = "EFGH"
显然无效。本质上是在寻找 ComboBox.Value = ComboBox.ValueWhereSecondColumnEquals("EFGH")
的逻辑
【问题讨论】:
【参考方案1】:并假设它不是基于表/查询:
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
【讨论】:
to ListCount-1
:) 我正要添加这个。
有时最好的答案是最简单的 - 简直不敢相信我从来没有想过循环浏览它!【参考方案2】:
假设你的组合是基于一个表的,你可以 DLookUp 表中的值:
ComboBox.Value = Dlookup("Value","Table","Code='" & sCode & "'")
【讨论】:
这也有效。目前它不是基于表格,但可能会在某个时候出现 启,除非你的值很少,我说的很少是指2或3,它应该基于一个表,以便于维护和用于报告和查询。 我知道 - 整个事情稍后将后端到 SQL Server,但目前我正在等待提供完整的映射列表,我只是在拼凑一个 UI 设计(零后退- end) 向客户展示初始费用。【参考方案3】:如果源是组合框中选定的值,而目标是未绑定的组合框,请将目标组合框的 .BoundColumn 属性设置为适当的列,然后正常分配组合框值,如 cboX=cboY。即使绑定了目标组合框,您也可以根据需要动态更改绑定的列。
【讨论】:
以上是关于Access VBA:根据非绑定列在组合框中查找项目的主要内容,如果未能解决你的问题,请参考以下文章
每次使用 access vba 在第一个组合中选择值时,清除链接组合框中的值
Access VBA Listbox.Requery 命令清除列表项