我正在努力解决一个简单的问题,无法解决它。我有一个用户窗体,用户可以从文本框中手动填充该窗体。我决定还添加一个复选框,以允许用户用特定的项目列表填充相同的列表框。为此,我用数组做了一个简单的复选框。它工作得很好。但是显然,每次您选中和取消选中它们时,都会不断添加项目。
Private Sub Checkbox1_Click()
Dim mylist(7) As String
Dim i As Long
mylist(0) = "time"
mylist(1) = "hour"
mylist(2) = "how"
mylist(3) = "test"
mylist(4) = "number"
mylist(5) = "sent"
mylist(6) = "memo"
mylist(7) = "value"
For i = 0 To 7
If CheckBox1.Value = True Then
Finallist.AddItem mylist(i)
End If
Next i
End Sub
当使用上述代码选中复选框时,我可以填充列表,但是当用户取消选中列表框时,我很难从列表中删除数组项。当用户取消选中同一复选框时,我只需要从列表框中删除相同的项目即可。
我在代码之后尝试了以下解决方案,但据我了解,似乎在犯错。只是完全卡住了...。有人可以帮我吗?
If checkobx.value=false then
For i = 0 To 7
For j = 0 To FinalList.ListCount - 1
If InStr(Final.List(j), mylist(i)) > 0 Then
Finallist.RemoveItem mylist(i)
End If
Next j
Next i
end if
答案 0 :(得分:0)
尝试一下(注释中的解释和未测试的内容):
If CheckBox1.Value Then ‘ if checkbox checked
For i = 0 To 7
NegKeyList.AddItem interrlist(i)
Next
Else ‘otherwise
Dim i As Long
For i = NegKeyList.ListCount - 1 To 0 Step -1 ‘ loop through listbox items from last one backwards
If Not IsError(Application.Match(NegKeyList.List(i), interrlist,0)) Then NegKeyList.RemoveItem i ‘ if current listbox item matches any interrlist array item then remove it from listbox
Next
End If