VBA/MS访问,清除新记录中的选择项目
我有一个列表框,我填充表/查询和“选择”一些VBA代码的多个条目。在Form_Current上,我打算让代码选择该列表框中为当前记录选择的任何项目(保存在另一个表格中)。VBA/MS访问,清除新记录中的选择项目
当我点击去下一个记录时,先前选择的列表框项目仍然被选中。我如何清除它们?我会认为一个新的记录会自动为我做这一切。
我在12年来第一次回到VBA,所以我不是大师。
感谢, 汉斯
试试这个(found here):
Function ClearList(lst As ListBox) As Boolean
On Error GoTo Err_ClearList
'Purpose: Unselect all items in the listbox.
'Return: True if successful
'Author: Allen Browne. http://allenbrowne.com June, 2006.
Dim varItem As Variant
If lst.MultiSelect = 0 Then
lst = Null
Else
For Each varItem In lst.ItemsSelected
lst.Selected(varItem) = False
Next
End If
ClearList = True
Exit_ClearList:
Exit Function
Err_ClearList:
Call LogError(Err.Number, Err.Description, "ClearList()")
Resume Exit_ClearList
End Function
谢谢 - 我看到了代码,但无法正常工作。现在它是。我正在做'ListBoxPrograms = ClearList(ListBoxPrograms)'之前我试过'ListBoxPrograms.ClearList()'和'ClearList(ListBoxPrograms)'没有成功。第一个工作,但为什么VBA需要一个变量来获得回报?我应该把它设置为另一个变量还是我没有问题?感谢您的帮助 - Hans – Hans 2011-04-04 20:25:52
您可以将它作为Sub来使用,而且您不需要该变量。但是,为了检查返回值还有什么要说的,请介意一下。 – BIBD 2011-04-04 22:09:16
你应该以'ClearList Me!ListBoxPrograms'或'Call ClearList(Me!ListBoxPrograms)'或'MyBooleanVariable = ClearList(Me!ListBoxPrograms)'的方式来做。没有其他办法可行。你做了'ListBoxPrograms = ClearList(ListBoxPrograms)'。这意味着您正在清除选择,但将listbox value属性设置为True。这是无稽之谈,并可能导致问题(我很惊讶它实际上不会导致错误)。 – 2011-04-07 03:44:06
编辑记录有一个列表框是一个相当奇怪的方式来做事。 – 2011-04-07 03:44:40