我正计划创建一个用于安排采访的表格。理想情况下,我希望所选的时间一旦在上一个条目中选定后就在ComboBox上删除。
示例:第一个用户选择了“ 10am”作为他的日程表,然后该日程表将列在一列中。然后,第二个用户将不再能够查看/选择“上午10点”的时间表。
在此先感谢任何可以提供帮助的人!干杯!
答案 0 :(得分:0)
这是一个子例程,它将根据完整项目列表和要排除的项目列表来替换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)
)那么您可以通过以下方式替换组合框ComboBox1
中的列表:
RebuildItemList ComboBox1, Sheet1.Range("A1:A20"), Sheet2.Columns(3)