2014-02-19 59 views
2

所以我在Access中有一個窗體(frmBookingForm),並且有一個顯示查詢結果的列表框(lstMyBookings)。 在此之下,我有一個按鈕(cmdDeleteBooking),它使用lstMyBookings選項作爲輸入運行刪除查詢。該按鈕然後運行一個宏,首先檢查是否選擇了列表框中的記錄,如果有,則運行刪除查詢並重新查詢數據,因此刪除的記錄不再顯示在列表框中。如果沒有,則顯示錯誤消息。 但是,如果我再次單擊該按鈕,它將再次運行刪除查詢,即使在列表框中顯然沒有選中任何東西。運行宏/查詢後MS Access取消選擇列表框

本質上,我該如何「清除」列表框選擇?

我更喜歡能夠以宏格式完成的解決方案,因爲我對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屬性設置爲無,此代碼只是將List0設置爲Null。如果該控件的MultiSelect屬性設置爲其他任何值,則代碼將循環顯示當前選定的所有項目,並將該項目的Selected屬性設置爲False。我的例子假定你的控制被稱爲List0

EDIT

要使用此代碼,使用一個事件,而不是一個宏。這裏是你如何做到這一點:

  1. 右鍵單擊右鍵,選擇屬性
  2. 在屬性表窗口中,單擊「事件」選項卡上
  3. 點擊「點擊」空白區域內,然後單擊下拉箭頭,然後選擇「[事件過程]」
  4. 單擊省略號(「...」)進入代碼編輯器。

在代碼編輯器,你應該已經在你的事件按鈕(假設該按鈕被稱爲COMMAND1:

Private Sub Command1_Click() 


End Sub 

添加您的代碼(假設列表框被稱爲列表0)之間:

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 
+0

謝謝,但我怎麼有這個宏的一部分?還有就是單擊按鈕時運行宏,讓我怎麼結合呢? – user2396812

+0

請參閱我的編輯到回答。 –