ComboBox: элементы не будут доступны после выбора и ввода - PullRequest
0 голосов
/ 25 сентября 2018

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

Пример: сначала пользователь выбрал «10:00» для своего расписания, затем это расписание будет указано в списке.колонка.Тогда Второй пользователь больше не сможет видеть / выбирать «10 утра» для расписания.

Заранее спасибо всем, кто мог бы помочь!Ура! * * 1005

1 Ответ

0 голосов
/ 26 сентября 2018

Вот подпрограмма, которая заменит список в объекте ComboBox на основе полного списка элементов, и список исключаемых элементов:

Private Sub RebuildItemList(ByRef ComboBox As Object, ByVal ItemsAvailable As Range, ByVal ItemsUsed As Range)
    'ComboBox: The ComboBox you want to change the list for
    'ItemsAvailable: A Range of cells that contain all the possible Items
    'ItemsUsed: A Range of cells that contain the Items you want to exlude from the list

    ComboBox.Clear 'Delete existing Entries

    If ItemsAvailable Is Nothing Then Exit Sub 'No Items available

    If ItemsUsed Is Nothing Then 'All Items available
        ComboBox.ControlSource = ItemsAvailable.Address(True, True, xlA1, True)
    Else
        Dim WorkingRange As Range

        For Each WorkingRange In ItemsAvailable.Cells 'Check each Item
            If WorksheetFunction.CountIf(ItemsUsed, WorkingRange.Value) < 1 Then
            'If Item has not yet been used
                ComboBox.AddItem WorkingRange.Value 'Add Item to the list
            End If
        Next WorkingRange
    End If
End Sub

Например, если у вас был списокВремена хранятся в диапазоне Sheet1.Range("A1:A20"), и вы записали свои записанные встречи в Sheet2, указав время в столбце C (т. Е. Sheet2.Columns(3)), затем вы заменили бы список в ComboBox ComboBox1 следующим образом:

RebuildItemList ComboBox1, Sheet1.Range("A1:A20"), Sheet2.Columns(3)
...