Gustav Brock
gustav at cactus.dk
Thu Sep 25 04:55:46 CDT 2003
Hi David Well, how about the Click event ...? This will also fire when using keys. <code> Dim lst As ListBox Dim lngIndex As Long Dim strKey As String Dim booSelected As Boolean Set lst = Me!lstDemo With lst lngIndex = .ListIndex + Abs(.ColumnHeads) strKey = .ItemData(lngIndex) booSelected = .Selected(lngIndex) End With MsgBox strKey & ":" & Str(booSelected) If booSelected = True Then ' Append strKey to collection/selection. Else ' Remove strKey from collection/selection. End If Set lst = Nothing </code> However, the event will fire also when using the navigation keys. Thus, I would follow the advice of Drew to append/remove the selected items to an (interim) collection or array and only run the append/delete action query (or code) on the table if an item really is appended or removed from the collection or array. /gustav > How do I determine which item has just been selected/deselected? Then I > could add it if selected, or delete if deselected. >>It sounds/looks like you are building the complete list every time an >>item is selected. Why not add only that item which has been selected? >> >>/gustav >> >> >> > I have a listbox which is used to select clients for including in >> > reports. When the listbox is updated I have a separate text box that >> > shows >> > the names of the clients selected and the number selected. At the same >> > time I store the ID's of the clients in a table that is used to filter out >> > the required client records. The initial list box has over 1800 names. It >> > is taking about 10 seconds to update the lists each time a client is >> > selected. If I rem out the adding of ID's to the table then the time >> > reduces to about 3 seconds. The main part of the code is - >> >> > With Me!lstClientList >> > For Each varItem In .ItemsSelected >> > If .Selected(varItem) = True Then >> > strList = strList & .Column(1, varItem) & vbCrLf ' Adds >> > client name to selected list >> > intClientNo = intClientNo + >> 1 ' >> > Counts number of selected clients >> > rst.AddNew >> > 'Add client ID to table >> > rst!CustIDNo = .Column(0, varItem) >> > rst.Update >> > End If >> > Next varItem >> > End With >> >> > Any thoughts as to how I can speed up the process? The BE is SQL2000.