2011-04-04 99 views
0

我有一個列表框,我填充表/查詢和「選擇」一些VBA代碼的多個條目。在Form_Current上,我打算讓代碼選擇該列表框中爲當前記錄選擇的任何項目(保存在另一個表格中)。VBA/MS訪問,清除新記錄中的選擇項目

當我點擊去下一個記錄時,先前選擇的列表框項目仍然被選中。我如何清除它們?我會認爲一個新的記錄會自動爲我做這一切。

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

感謝, 漢斯

+0

編輯記錄有一個列表框是一個相當奇怪的方式來做事。 – 2011-04-07 03:44:40

回答

1

試試這個(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