VBA/MS访问,清除新记录中的选择项目

问题描述:

我有一个列表框,我填充表/查询和“选择”一些VBA代码的多个条目。在Form_Current上,我打算让代码选择该列表框中为当前记录选择的任何项目(保存在另一个表格中)。VBA/MS访问,清除新记录中的选择项目

当我点击去下一个记录时,先前选择的列表框项目仍然被选中。我如何清除它们?我会认为一个新的记录会自动为我做这一切。

我在12年来第一次回到VBA,所以我不是大师。

感谢, 汉斯

+0

编辑记录有一个列表框是一个相当奇怪的方式来做事。 – 2011-04-07 03:44:40

试试这个(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 
+0

谢谢 - 我看到了代码,但无法正常工作。现在它是。我正在做'ListBoxPrograms = ClearList(ListBoxPrograms)'之前我试过'ListBoxPrograms.ClearList()'和'ClearList(ListBoxPrograms)'没有成功。第一个工作,但为什么VBA需要一个变量来获得回报?我应该把它设置为另一个变量还是我没有问题?感谢您的帮助 - Hans – Hans 2011-04-04 20:25:52

+0

您可以将它作为Sub来使用,而且您不需要该变量。但是,为了检查返回值还有什么要说的,请介意一下。 – BIBD 2011-04-04 22:09:16

+0

你应该以'ClearList Me!ListBoxPrograms'或'Call ClearList(Me!ListBoxPrograms)'或'MyBooleanVariable = ClearList(Me!ListBoxPrograms)'的方式来做。没有其他办法可行。你做了'ListBoxPrograms = ClearList(ListBoxPrograms)'。这意味着您正在清除选择,但将listbox value属性设置为True。这是无稽之谈,并可能导致问题(我很惊讶它实际上不会导致错误)。 – 2011-04-07 03:44:06