【问题标题】:Updating drop down list loop更新下拉列表循环
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 那么就不能创建一个通过循环展开的列表吗?
  • 是的,通过扩大列表查看的范围。该列表将随之增长
  • 啊,所以我需要在运行循环时创建一个单独的命名范围,然后为列表引用该范围。
  • 您可以在循环之前或之后创建一次列表,也可以在 Excel 工作表中手动创建。循环所做的只是扩展列表查看的命名范围
猜你喜欢
  • 1970-01-01
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 2015-08-03
  • 2015-09-08
  • 1970-01-01
  • 2022-10-13
相关资源
最近更新 更多