从填充我的列表框的范围中删除值

时间:2015-05-29 20:11:46

标签: excel vba excel-vba

大家好,我有两个列表框。第一个列表框包含可供选择的所有项目。选择项目后,用户点击“添加”项目。命令按钮将该值复制到第二个列表框的范围内。我相信大多数人都看过类似的添加/删除列表框。

两个列表框都是通过插入控件创建的,它们由隐藏工作表上的输入范围的项填充。

这是我的问题:添加名称工作正常,但是'删除'我创建的程序似乎需要很长时间才能完成,因为项目列表可以超过200个项目。

我使用以下代码将选定的列表框值与输入范围值进行匹配,然后清除输入范围中单元格的内容:

Sub remove()


Dim r As Long
Dim al As ListBox

Dim d As Range
Dim dd As Range
Dim allpick As Worksheet


Set al = Worksheets("LISTBOX").ListBoxes("listselected")
Set allpick = Worksheets("columns")
Set dd = allpick.Range("selectedNAMES")


With al
    For r = 1 To .ListCount
        If .selected(r) Then
            For Each d In dd
                If d.Value = .List(r) Then
                d.ClearContents
                End If
            Next d
        End If

    Next r
End With

End Sub

我可以使用替代代码或结构,以便完成这么长时间吗?

1 个答案:

答案 0 :(得分:0)

我使用了评论者提到的find函数并编写了下面的代码。它更快,正是我想要的。但是,我不知道在“如果CELL没有那么”之后要放什么,所以我只是用计算。有什么建议吗?

Dim r As Long
Dim al As ListBox
Dim strNAME As String
Dim names As Worksheet
Set names = Worksheets("names")
Set al = Worksheets("HOME").ListBoxes("selectednames")


With al
    For r = 1 To .ListCount
        If .Selected(r) Then
        strNAME = .List(r)
        Set cell = names.Range("currentnames").Find(What:=strNAME)

            If cell Is Nothing Then
                Calculate

            Else: cell.ClearContents
            End If
        End If
    Next r
End With