VBA复选框到列表框(取消选中删除数组的选项)

时间:2018-10-05 21:35:18

标签: vba checkbox

我正在努力解决一个简单的问题,无法解决它。我有一个用户窗体,用户可以从文本框中手动填充该窗体。我决定还添加一个复选框,以允许用户用特定的项目列表填充相同的列表框。为此,我用数组做了一个简单的复选框。它工作得很好。但是显然,每次您选中和取消选中它们时,都会不断添加项目。

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

1 个答案:

答案 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