所以我在Access中有一个表单(frmBookingForm),以及一个显示查询结果的列表框(lstMyBookings)。 在这下面,我有一个按钮(cmdDeleteBooking),它使用lstMyBookings选项作为输入运行删除查询。然后该按钮运行一个宏,首先检查列表框中的记录是否被选中,如果是,则运行删除查询并重新查询数据,因此删除的记录不再显示在列表框中。如果不是,则显示错误消息。 但是,如果我再次单击该按钮,它会再次运行删除查询,即使在列表框中显然没有选择任何内容。
基本上,我如何“清除”列表框选择?
我更喜欢可以以宏格式完成的解决方案,因为我几乎不了解VBA。但是,如果提供VBA解决方案,我将非常感谢对它的简短解释。
谢谢:)
答案 0 :(得分:3)
看起来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
。
修改强>
要使用此代码,请使用事件而不是宏。这是你如何做到这一点:
在代码编辑器中,您应该已经拥有了按钮的事件(让我们假设该按钮被称为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