Фильтровать заполненный список и сохранить несколько вариантов - PullRequest
0 голосов
/ 22 марта 2019

Контекст

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

Описание приложения

Я создал внешний центральный список, который я открываю с помощью Set myData = Workbooks.Open("Hyperlink").Этот список содержит все запасные части для машин.Я сделал этот список внешним, потому что операторы машины также должны иметь возможность добавлять дополнительные детали.Затем я заполняю список всеми запасными частями из внешнего списка.Когда список заполнен, я закрываю внешний список, чтобы кто-то другой мог открыть список.Изображение ниже показывает, как выглядит пользовательская форма.Список теперь заполнен фиктивными продуктами, потому что я все еще тестирую его.

Операторы машины должны иметь возможность выбирать несколько запасных частей.

Userform

Проблема

Я хочу, чтобы операторы могли фильтровать список и одновременно выбирать несколько запасных частей.Вот где это становится сложно.

Я знаю, как отфильтровать список, но мой способ сбрасывает список каждый раз, что делает невозможным выбор нескольких продуктов.Я посмотрел на другую тему переполнения стека, но у них та же проблема.

Вопрос

Есть ли способ, которым я могу отфильтровать список, выбрать элемент, отфильтровать снова, выбрать другой элемент, отфильтровать снова, снова выбрать другой элемент и т. Д. И т. Д. И т. Д..?* Отфильтруйте заполненный список, не открывая исходный лист

Заранее спасибо.

Этот раздел требует, чтобы список оставался открытым, и сбрасывает время каждого списка

В этом разделе удаляются все элементы из списка

1 Ответ

0 голосов
/ 25 марта 2019

С помощью @JvdV я решил часть проблемы.Его решение гарантирует, что я могу выбрать некоторые продукты и сохранить этот выбор.Это позволило мне добавить код для текстового поля, которое фильтрует список.Этот код фильтрует заполненный список, удаляя все содержимое, которое не совпадает с текстовым полем.

Когда текстовое поле очищается до "", список сбрасывается и заполняется снова.Смотрите весь код ниже;

Private Sub FilterProdNr_Change()
For i = UsedPart.ListCount - 1 To 0 Step -1
If InStr(1, UsedPart.List(i), FilterProdNr) = 0 Then UsedPart.RemoveItem (i)
Next i

If FilterProdNr = "" Then
   UsedPart.Clear

   Dim myData As Workbook
   Dim cProd As Range
   Dim ws As Worksheet

   Set myData = Workbooks.Open("Hyperlink")
   Set ws = Worksheets("OnderhoudPartsCentraal")
   For Each cProd In ws.Range("Product_nummer")
   With Me.UsedPart
       .AddItem cProd.Value & " <> " & cProd.Offset(0, 1).Value
   End With
   Next cProd

   myData.Close
End If
End Sub

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...