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

时间:2016-08-15 16:02:05

标签: vba ms-access combobox

我在Access 2013表单中有一个包含3列的多列组合框。如果我选择组合框中的一个项目,它设置的值就是第一列中的值。有没有办法使用VBA将组合框的值设置为所有3个值,就像你选择它时一样?如果你不能,那我怎样才能将值设置为第3列而不是第1列?

这就是我的组合框:

enter image description here

这是我选择第一项后的样子:

enter image description here

我不想只显示“1”,而是希望它在下拉列表中显示“1 | 2015 | 1.1”。

2 个答案:

答案 0 :(得分:2)

你不能(除了通过连接行源中的列)。

选择项目后显示的值始终是第一个可见列 因此,要显示第3列,请将之前的列设置为width = 0(可能不是您想要的)或将其移至第一位。

组合框的Value可能与显示的值不同,它由Bound column属性控制。

要访问其他列,请使用.Column属性。例如。您可以在组合框后面添加一个带有控件来源=myComboBox.Column(2)的文本框,以显示所选项目的第3列。

答案 1 :(得分:0)

解决方法可能是以下

  • 在组合框上方放置一个标签(例如" Label1")以完全隐藏它,但是它的下拉按钮

  • 在userform代码窗格中输入以下代码:

    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
    

这样,用户将在选择其中一个元素时读取整个组合文本时具有组合框的所有功能