Вот подпрограмма, которая заменит список в объекте 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)