选择项目后将多列组合框的值设置为所有列?

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:你试过这个吗?

以上是关于选择项目后将多列组合框的值设置为所有列?的主要内容,如果未能解决你的问题,请参考以下文章

Access VBA:根据非绑定列在组合框中查找项目

如何通过代码填充多列组合框?

如何在组合框中返回未绑定列的值

在 VBA 访问中为多列组合框赋值

多列组合框或 DataGridCombo Box 列缩小

组合框可以在其文本框部分显示多于一列吗?