【发布时间】:2016-08-15 16:02:04
【问题描述】:
我在 Access 2013 表单中有一个包含 3 列的多列组合框。如果我选择组合框中的一项,它设置的值就是第一列的值。有没有办法使用 VBA 将组合框的值设置为所有 3 个值,就像你选择它时一样?如果不能,那么如何将值设置为第三列值而不是第一列?
这就是我的组合框的样子:
这是我选择第一项后的样子:
我希望它像在下拉列表中一样显示“1 | 2015 | 1.1”,而不是只显示“1”。
【问题讨论】:
我在 Access 2013 表单中有一个包含 3 列的多列组合框。如果我选择组合框中的一项,它设置的值就是第一列的值。有没有办法使用 VBA 将组合框的值设置为所有 3 个值,就像你选择它时一样?如果不能,那么如何将值设置为第三列值而不是第一列?
这就是我的组合框的样子:
这是我选择第一项后的样子:
我希望它像在下拉列表中一样显示“1 | 2015 | 1.1”,而不是只显示“1”。
【问题讨论】:
您不能(除非连接行源中的列)。
选择项目后显示的值始终是第一个可见列。
因此,要显示第 3 列,请将前面的列设置为 width=0(可能不是您想要的)或将其移到第一位。
组合框的Value可以与显示的值不同,由Bound column属性控制。
要访问其他列,请使用.Column 属性。例如。您可以在组合框后添加一个文本框,并带有控制源=myComboBox.Column(2),以显示所选项目的第 3 列。
【讨论】:
解决方法可能如下
在组合框上方放置一个标签(比如“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
这样,用户在选择其中一个元素时阅读整个组合文本时,将拥有组合框的所有功能
【讨论】: