【问题标题】:Display selected item in its listbox在其列表框中显示所选项目
【发布时间】:2020-07-06 16:13:49
【问题描述】:

我有一个包含 6 个项目的列表框,我已将列表框编码为下拉。我的问题是,如何让选定的项目在被选中后出现在列表框中。这是我在 lostfocus 事件中的代码:

'----------------------------------------------------------------
'   Save selection for update query
'----------------------------------------------------------------

 Dim frm As Form, ctl As Control
 Dim varItm As Variant
 Set frm = Forms!loginForm
 Set ctl = frm!areaLB
 For Each varItm In ctl.ItemsSelected
 areaGbl = ctl.ItemData(varItm)
 Next varItm
'----------------------------------------------------------------
'   CHeck selection to load station dropdown
'----------------------------------------------------------------
If areaGbl = "Batting Cages" Then
 Me.stationLB.RowSource = "cageTbl"
 Else
 Me.stationLB.RowSource = "RangeBays"
End If
Me.areaDsp = areaHld
Me.areaLB.Height = 500

【问题讨论】:

  • 请注意,我调整了列表框的大小以仅容纳一个条目。 Me.areaLB.Height = 500。我希望选中的项目出现在该列表框中。
  • 你为什么不使用组合框呢?

标签: vba ms-access


【解决方案1】:

areaLB 列表框控件的 rowsourcetype 是什么?

如果是值列表,只需删除所有项目并从 areaGbl 变量中添加一个记录/值。

For nIndex = 0 To areaLB.ListCount - 1
  areaLB.RemoveItem nIndex
Next nIndex

areaLB.AddItem areaGBL

如果rowsourcetype是table/query,改变rowsource的查询如下

areaLB.rowsource = "Select <fieldName> from <table name> where     
 <fieldname> in '" & areaGBL & "'"

【讨论】:

  • 有六个不同的列表框,一些带有值列表,而另一些带有查询。在您的第一个示例中,我必须保存值列表并在清除列表框后重新加载它。必须对第二个示例做类似的事情,保存并重新加载原始查询。让我知道我的假设是否正确。 jpl458
  • 是的,在清除或重置为原始状态时。如果是值列表,您需要原始值列表。因此,在重置变量之前声明变量并获取值列表,以便稍后在清除时可以使用这些变量来获取原始列表。它适用于值列表和查询。如果是值列表,您可以使用数组对象使您的工作更轻松。
  • 我会试一试的。我理解你的代码,但似乎 vba 中应该有一种方法可以做到这一点。感谢您的帮助。
  • 您的做法是不推荐编码或最好的解决方案。选择时在列表中显示单个值不是首选方式,而是您可以使用附加标签来显示已选择的内容等。无论如何,我已经根据您的要求编写了代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多