【问题标题】: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”。

【问题讨论】:

    标签: vba ms-access combobox


    【解决方案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:你试过这个吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    相关资源
    最近更新 更多