Я борюсь с простой вещью и не могу ее решить. У меня есть пользовательская форма, которую пользователь может заполнить из текстового поля вручную. Я решил также добавить флажок, чтобы пользователь мог заполнять тот же список конкретным списком элементов. Для этого я сделал простой флажок с массивом. Работает отлично. Но, очевидно, продолжает добавлять элементы каждый раз, когда вы ставите и снимаете отметку.
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 ответ
Попробуйте это (объяснения в комментариях и непроверенные):
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
Похожие вопросы
Новые вопросы
vba
Visual Basic для приложений (VBA) - это управляемый событиями объектно-ориентированный язык программирования для написания макросов, используемый для всего пакета Office, а также для других приложений. VBA не эквивалентен VB.NET или VBS; если вы работаете в Visual Studio, используйте [vb.net]. Если ваш вопрос конкретно касается программирования любого приложения MS Office, также используйте соответствующий тег: [excel], [ms-access], [ms-word], [outlook] или [ms-project].