大家好,我有两个列表框。第一个列表框包含可供选择的所有项目。选择项目后,用户点击“添加”项目。命令按钮将该值复制到第二个列表框的范围内。我相信大多数人都看过类似的添加/删除列表框。
两个列表框都是通过插入控件创建的,它们由隐藏工作表上的输入范围的项填充。
这是我的问题:添加名称工作正常,但是'删除'我创建的程序似乎需要很长时间才能完成,因为项目列表可以超过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
我可以使用替代代码或结构,以便完成这么长时间吗?
答案 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