删除列表框中的多个选定项目 - 仅识别第一个选择的代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除列表框中的多个选定项目 - 仅识别第一个选择的代码相关的知识,希望对你有一定的参考价值。

我有两个列表框,我正在尝试将列表1中的项目添加到列表2,然后可以一次从列表2中删除多个项目。请注意,列表1停滞不前(这应该是这样的)。

我有正确的添加项目:

'Add the selected items to List 2
Dim i As Integer

If lst1.ItemsSelected.Count > 0 Then
    i = 0
    While i < lst1.ListCount
        If lst1.Selected(i) Then
            lst2.AddItem (lst1.ItemData(i) & ";" & lst1.Column(1, i) & ";")
            lst1.Selected(i) = False
        End If
        i = i + 1
    Wend
End If

但是,当我尝试以类似的方式从列表2中删除项目时,它只识别所选的第一个项目,并跳过我选择的其他项目。这就是问题。这是我的代码:

'Remove the selected items from List 2
Dim i As Integer

If lst2.ItemsSelected.Count > 0 Then
    i = lst2.ListCount - 1
    While i >= 0
       If lst2.Selected(i) Then
           lst2.RemoveItem (i)
           lst2.Selected(i) = False
       End If
        i = i - 1
    Wend
End If

我怎样才能正常工作?

答案

据我所知,只要删除一个项目,所有项目都会被取消选中,因此:

Dim itm As Variant
Dim srem As String
Dim asrem As Variant

    For Each itm In lst2.ItemsSelected
        srem = srem & "," & itm
    Next

    asrem = Split(Mid(srem, 2), ",")
    For i = UBound(asrem) To 0 Step -1
        lst2.RemoveItem lst2.ItemData(asrem(i))
    Next

另请注意,这是Access,您正在处理值列表,因此行源文本上的替换也将起作用。

另一答案

尝试使用for / next循环而不是While?

这样的东西在PPT / XLS中起作用,我认为在Access中应该类似。

For i = lst2.ListCount - 1 to 0 step -1
    If lst2.Selected(i) = True Then
        lst2.RemoveItem(i)
    End If
Next
另一答案

与@Fionnuala相同的概念,除了我使用的集合,我通常发现更灵活:

Dim i As Integer
Dim listColl As Collection
Dim Item As Variant

Set listColl = New Collection
With Me.listAvailable
    ' Add Selected Items to Collection (MultiSelect Listbox)
     For i = 0 To .ListCount - 1
        If .Selected(i) Then
            listColl.Add .ItemData(i)
        End If
    Next i
End With

For Each Item In listColl
    Me.listSelected.AddItem Item
    Me.listAvailable.RemoveItem Item
Next Item

以上是关于删除列表框中的多个选定项目 - 仅识别第一个选择的代码的主要内容,如果未能解决你的问题,请参考以下文章

从c#.net中列表框中的多个选定项构建查询

如何根据列表框中的选定行填充多个文本框

从列表框中删除项目(MS Access VBA)

保存列表框中的选定项目以供其他类使用

如何使用 jquery 从 asp.net 列表框中仅获取当前选定的选项

根据选择一个列表框中的项目选择/取消选择多个列表框中的项目 - C# Windows 窗体