【问题标题】:Which item in an access form listbox object have I double-clicked on?我双击了访问表单列表框对象中的哪个项目?
【发布时间】:2016-11-24 22:51:02
【问题描述】:

我的表单中有一个列表框,其中 MultiSelect as Simple。

我希望能够使用我在 lst_DblClick Sub 中双击的项目。类似于Me.lst.Clicked

可能已经选择了其他项目,否则我知道我可以遍历这些项目并使用Me.lst.Selected(i) 或类似的。我无法识别最近点击的那个。除了将这个存储在一个看起来像大锤一样巨大的地方之外,我不知道该去哪里。

我已经在同一表单的 Click 事件中循环遍历项目,这就是为什么可能已经从中选择了一些项目的原因。

作为旁注,我不确定我在此处输入的内容是否会起作用,因为https://msdn.microsoft.com/en-us/library/office/ff837260.aspx 告诉我单击事件将与双精度一样触发。我不会通过单击打开消息框或类似的东西,所以希望它仍然会触发。

【问题讨论】:

  • 您是否尝试过使用ListBox1_Click 事件处理程序来跟踪在某个公共变量中选择的项目?
  • 我没有,但这是我暗指的大锤方法。我设想随着我的团队越来越多地使用它,列表中可能会有更多的项目。
  • 只要“识别最近点击的那个”列表框项目问题我想不出除了“ListBox1_Click event+公共变量”方法,我根本不会称其为“大锤”,这是问题所在。
  • 我必须同意用户。如果您担心它们被选中的顺序,唯一的选择是在每次选择后写入一个数组。没有 LastClicked 属性或类似的东西,它要么被选中,要么未被选中..
  • 谢谢两位,我想我只是在问,以防万一有人能想到其他方法。到时候我会实现的。

标签: forms vba ms-access listbox double-click


【解决方案1】:

不用写一堆代码就可以做你想做的事。

当 Access Listbox 选择了 1 个或多个项目时(无论使用“简单”或“扩展”多选模式),有多种方法可以获取数据。

如果您想知道列表框中当前选定的项目(最后单击的项目),您可以使用 .Column 属性引用它,而无需指定 Row 参数。 Index 参数基于 0,因此列表框中的第 1 列使用 .Column 属性引用为 0,第 2 列引用为 1,等等。

Me.lst.Column(0)

因此,例如,假设列表框中的第一列包含您希望在双击事件中执行的唯一行标识符,您可以使用以下行在双击事件中引用该值上面显示的代码,然后对该值进行操作。

当您想要遍历多选列表框中的所有选定项目时,您可以通过枚举 .ItemsSelected 属性以下列方式单独执行此操作。

Dim varItm As Variant
Dim ID As Long
Dim AName As String

For Each varItm In Me.lst.ItemsSelected
    'Loop and do something with one or more values from each selected
    'row in the listbox
    ID = Me.lst.Column(0, varItm)    'get the value from the 1st column
    AName = Me.lst.Column(2, varItm) 'get the value from the 3rd column
Next varItm

【讨论】:

  • 谢谢,我现在要下班了,明天我会试试这个,所以我现在只支持这个。根据明天的试验,我可能会接受。
猜你喜欢
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
相关资源
最近更新 更多