选择项目后将多列组合框的值设置为所有列?
Posted
技术标签:
【中文标题】选择项目后将多列组合框的值设置为所有列?【英文标题】:Set value of multicolumn combobox to all columns after selecting an item? 【发布时间】:2016-08-15 16:02:04 【问题描述】:我在 Access 2013 表单中有一个包含 3 列的多列组合框。如果我选择组合框中的一项,它设置的值就是第一列的值。有没有办法使用 VBA 将组合框的值设置为所有 3 个值,就像你选择它时一样?如果不能,那么如何将值设置为第三列值而不是第一列?
这就是我的组合框的样子:
这是我选择第一项后的样子:
我希望它像在下拉列表中一样显示“1 | 2015 | 1.1”,而不是只显示“1”。
【问题讨论】:
【参考方案1】:您不能(除非连接行源中的列)。
选择项目后显示的值始终是第一个可见列。 因此,要显示第 3 列,请将前面的列设置为 width=0(可能不是您想要的)或将其移到第一位。
组合框的Value
可以与显示的值不同,由Bound column
属性控制。
要访问其他列,请使用.Column
属性。例如。您可以在组合框后添加一个文本框,并带有控制源=myComboBox.Column(2)
,以显示所选项目的第 3 列。
【讨论】:
感谢您的解释。我最终更改了填充组合框的查询中的顺序,因此我将要显示的值作为查询返回的第一个字段。我可以在几分钟内接受你的回答【参考方案2】:解决方法可能如下
在组合框上方放置一个标签(比如“Label1”)以完全隐藏它,但它的下拉按钮
在用户窗体代码窗格中放置以下代码:
Private Sub ComboBox1_Change()
Dim cbIndex As Long
With Me
cbIndex = .ComboBox1.ListIndex
If cbIndex = -1 Then
.Label1.Caption = ""
Else
.Label1.Caption = .ComboBox1.List(cbIndex, 0) & "|" & .ComboBox1.List(cbIndex, 1) & "|" & .ComboBox1.List(cbIndex, 2) & "|"
End If
End With
End Sub
这样,用户在选择其中一个元素时阅读整个组合文本时,将拥有组合框的所有功能
【讨论】:
@Michael:你试过这个吗?以上是关于选择项目后将多列组合框的值设置为所有列?的主要内容,如果未能解决你的问题,请参考以下文章