VBA Checkbox to Listbox (снимите флажок, чтобы удалить массив) - PullRequest
0 голосов
/ 06 октября 2018

Я борюсь с простой вещью и не могу ее решить.У меня есть пользовательская форма, которую пользователь может заполнить из текстового поля вручную.Я решил добавить флажок, чтобы позволить пользователю заполнить тот же список конкретным списком элементов.Для этого я сделал простой флажок с массивом.Работает отлично.Но, очевидно, продолжает добавлять элементы каждый раз, когда вы проверяете и снимаете флажок.

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 голосов
/ 06 октября 2018

Попробуйте это (объяснения в комментариях и не проверено):

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
...