【发布时间】:2015-09-24 13:17:15
【问题描述】:
我正在尝试创建一个列表,该列表会检查数据库中的所需名称,然后将该项目添加到下拉列表中。到目前为止,我所拥有的代码的工作原理是检查名称,然后覆盖列表中的任何先前条目。我该如何更改,以便在每次找到正确数据时添加一个新的列表项?
While ThisWorkbook.Worksheets("Inventory Database").Range("A" & j).Value <> ""
If ThisWorkbook.Worksheets("Inventory Database").Range("A" & j) = ThisWorkbook.Worksheets("Equipment Availability").Cells(1, i) Then
dvList = ThisWorkbook.Worksheets("Inventory Database").Range("B" & j)
'~~> Creates the list
With Sheets("Equipment Availability").Cells(2, 2).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=dvList
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
j = j + 1
Wend
【问题讨论】:
-
我不太清楚你匹配的是什么。是在特定单元格更改还是将某些内容添加到列表中时?无论哪种方式,您都可以使用工作表更改或目标更改事件。
-
这在工作表被激活时运行。问题是我只得到一个系列的最后一项而不是整个系列,因为每次它运行循环它都会破坏最后一个列表并创建一个带有单个项目的新列表。例如列表应该是“选项 1”“选项 2”“选项 3”,但它只给出“选项 3”
-
你能不能在循环之外做一个单独的删除语句,然后删除那个?目前,您正在每次添加之前清除列表。
-
如果我尝试删除循环内的 .delete,我会收到应用程序定义或对象定义的错误
标签: excel vba list loops dropdown