Добавление новых листов из коллекции списков, если выбрано определенное значение - PullRequest
0 голосов
/ 24 ноября 2018

Некоторые предыстории: есть 2 рабочих листа, один со списком имен / информации о сотрудниках и один с отчетами о доставке (каждая доставка была сделана одним из сотрудников на другом листе)

Я сделалсписок с именами сотрудников с первого листа.Основываясь на выборе из списка, я хотел бы вставить новый рабочий лист для выбранного сотрудника, в котором перечислены все поставки, которые они сделали (вне листа доставки).В списке также есть опция «все сотрудники», в которую нужно вставить лист для каждого сотрудника.

1 Ответ

0 голосов
/ 24 ноября 2018

Вероятно, было бы лучше, если бы в качестве флажка было выбрано «Все сотрудники», а не значение в списке, но это всего лишь личные предпочтения.Если вы решили пойти по этому пути, вы можете использовать событие CheckBox_Click, чтобы полностью отключить ваш список, если он был отмечен.

В любом случае, к вашему актуальному вопросу.Сначала вы можете проверить значение вашего списка = All Employees, используя следующую строку кода:

If Me.ListBox1.Value = "All Employees" Then

После того, как вы убедились, что вышеприведенное верно, тогда вы можете получить общее количество элементов вваш список с .ListCount и цикл по каждому элементу списка:

For i = 0 To .ListCount - 1

Для каждого элемента в цикле убедитесь, что вы не добавляете лист с именем All Employees:

If .List(i) <> "All Employees" Then

и после того, как этот последний тест пройден, создайте новый рабочий лист и присвойте ему значение в поле списка:

Private Sub CommandButton1_Click()

    With Me.ListBox1
        If .Value = "All Employees" Then
            Dim i As Long
            For i = 0 To .ListCount - 1
                If .List(i) <> "All Employees" Then
                    ThisWorkbook.Worksheets.Add.Name = .List(i)
                End If
            Next
        End If
    End With

End Sub

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


Разные заметки

  • Поскольку вы не упомянули имя вашего списка, я использовал общее имя ListBox1 в коде.Вам придется изменить его на имя вашего фактического списка, если оно отличается.
  • Возможно, вам также придется обновить имя вашего CommandButton1 в приведенном выше коде, если имя кнопки вы нажимаете, чтобы заполнить листы.отличается.
...