Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba MS Access确定单击的列表框项目单击事件_Vba_Ms Access_Listbox - Fatal编程技术网

Vba MS Access确定单击的列表框项目单击事件

Vba MS Access确定单击的列表框项目单击事件,vba,ms-access,listbox,Vba,Ms Access,Listbox,我在MS Access中有一个列表框,希望找到获取在点击事件发生时选中/取消选中的列表项的最佳方法 这比在选定项之间循环要复杂一些,因为列表框中已经加载了一些选定项。我正在尝试查找在点击事件发生时受影响的单个项目 因此,如果用户在上面的示例中单击“Col2 How”,我将如何确定单击的是记录,或者,如果取消选择第一条记录,我需要知道。有什么线索吗 我能想到的唯一一件事是使用内存中的对象来维护高亮显示行的列表,并在单击确定增量时追溯到所选项目?您可以使用AfterUpdate事件,例如列表框的名

我在MS Access中有一个列表框,希望找到获取在点击事件发生时选中/取消选中的列表项的最佳方法

这比在选定项之间循环要复杂一些,因为列表框中已经加载了一些选定项。我正在尝试查找在点击事件发生时受影响的单个项目

因此,如果用户在上面的示例中单击“Col2 How”,我将如何确定单击的是记录,或者,如果取消选择第一条记录,我需要知道。有什么线索吗


我能想到的唯一一件事是使用内存中的对象来维护高亮显示行的列表,并在单击确定增量时追溯到所选项目?

您可以使用AfterUpdate事件,例如列表框的名称是“aListbox”, 所以试试这个:

Private Sub aListBox_AfterUpdate()
  Dim rowIndex As Integer
  Dim rowValue As String
  Dim rowIsSelected As Integer
  Dim result As String

  ' ListBox row index clicked
  rowIndex = Me.aListBox.ListIndex

  ' Row value clicked
  rowValue = Me.aListBox.Column(0)

  ' If row is selected return value is -1, if unselected return value 0
  rowIsSelected = Me.aListBox.Selected(rowIndex)

  If (rowIsSelected = -1) Then
    result = rowValue & " selected"
  Else
    result = rowValue & " unselected"
  End If

  MsgBox (result)

End Sub

你能想到的唯一一件事可能是非常接近。另一个visible=false的listbox和相同的rowsource可能更容易:您可以在listbox中使用一个循环,单击(对于可见的一个)来确定两者之间的差异,并更新不可见项中已更改项的状态。谢谢!,这真是太优雅了!我不明白为什么我想不出来!