2015-09-24 22 views
0

我试图创建一个列表,它检查所需名称的数据库,然后将该项目添加到下拉列表中。我到目前为止的代码的工作原理与它检查名称一样,然后覆盖列表中的任何以前的条目。我该如何修改,以便每次找到正确的数据时都添加一个新的列表项?正在更新下拉列表循环

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  
+0

我不能完全说出你的配对。是当一个特定的单元格发生变化或者某个东西被添加到列表中时?无论哪种方式,您都可以使用换页或目标更改事件。 – Trum

+0

这在激活表单时运行。问题是我只获得系列中的最后一个项目,而不是整个系列,因为每次运行循环时,它都会销毁最后一个列表并使用单个项目创建一个新列表。例如列表应该是“选项1”,“选项2”,“选项3”,但它只给出“选项3” –

+0

您是否可以不在循环外执行单独的删除语句,并删除该语句?目前,您在每次添加之前清除列表。 – Trum

回答

0

您应该只创建一次验证列表,同时引用一个命名范围。如果您在每个循环中展开命名范围(添加新值),则验证列表将自动更新。

+0

那么是不是可以创建一个通过循环扩展的列表? –

+0

是的,通过扩大名单看的范围。该列表将随之增长 –

+0

嗯,所以我需要在运行循环时创建一个单独的命名区域,然后引用该列表的范围。 –