2015-09-24 45 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

嗯,所以我需要在運行循環時創建一個單獨的命名區域,然後引用該列表的範圍。 –