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

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
Garuzz 6 Окт 2018 в 00:35

1 ответ

Лучший ответ

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

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
0
DisplayName 6 Окт 2018 в 05:53