【问题标题】:MS Access de-select listbox after running macro/query运行宏/查询后 MS Access 取消选择列表框
【发布时间】:2014-03-20 02:19:12
【问题描述】:

所以我在 Access 中有一个表单 (frmBookingForm) 和一个显示查询结果的列表框 (lstMyBookings)。 在此下方,我有一个按钮 (cmdDeleteBooking),它使用 lstMyBookings 选择作为输入运行删除查询。然后按钮运行一个宏,首先检查列表框中的记录是否被选中,如果是,则运行删除查询并重新查询数据,因此被删除的记录不再显示在列表框中。如果不是,则会显示错误消息。 但是,如果我再次单击该按钮,它会再次运行删除查询,即使列表框中显然没有选择任何内容。

基本上,我如何“清除”列表框选择?

我更喜欢可以以宏格式完成的解决方案,因为我对 VBA 几乎没有了解。但是,如果提供 VBA 解决方案,我将不胜感激。

谢谢:)

【问题讨论】:

  • 所以这是一个未绑定的控件?

标签: ms-access macros listbox


【解决方案1】:

看起来this website 有一个不错的小功能可以做到这一点。本质上,您需要测试它是否是多选,然后做两件事之一。我想如果你提前知道它是/不是多选,你甚至不需要“if”语句:

If List0.MultiSelect = 0 Then
    List0 = Null
Else
    For Each varItem In List0.ItemsSelected
        List0.Selected(varItem) = False
    Next
End If

如果控件的MultiSelect 属性设置为None,则此代码只是将List0 设置为Null。如果控件的MultiSelect 属性设置为其他任何值,则代码将遍历当前选定的所有项目,并将该项目的Selected 属性设置为False。我的示例假设您的控件名为List0

编辑

要使用此代码,请使用事件而不是宏。这样做的方法如下:

  1. 右键单击按钮,选择属性
  2. 在“属性表”窗口中,单击“事件”选项卡
  3. 在“On Click”空白区域内单击,然后单击下拉箭头,然后选择“[Event Procedure]”
  4. 点击省略号(“...”)进入代码编辑器。

在代码编辑器中,您应该已经有了按钮的事件(假设该按钮被称为 Command1:

Private Sub Command1_Click()


End Sub 

在两者之间添加您的代码(假设列表框名为 List0):

Private Sub Command1_Click()

If List0.MultiSelect = 0 Then
    List0 = Null
Else
    For Each varItem In List0.ItemsSelected
        List0.Selected(varItem) = False
    Next
End If

End Sub 

【讨论】:

  • 谢谢,但是如何将它作为宏的一部分包含在内?单击按钮时会运行一个宏,那么我该如何合并它呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多