数据验证下拉列表不自动更新

时间:2017-07-26 16:25:35

标签: excel vba validation

我在WorkSheet(PartsList)上有一个简单的数据列,用于过滤来自各自行的数据。在同一个WorkBook中的另一个WorkSheet(BoM)上,我通过数据验证' List'来引用该列。

我遇到的问题是,当' PartsList' WorkSheet已更新,下拉列表中显示的信息保持不变。

正如您在下图所示,下拉列表尚未更新“'部分#'虽然'部件号'和变种'专栏有。 enter image description here enter image description here

以下是生成列表的公式: enter image description here 有没有让下拉列表自动更新?

2 个答案:

答案 0 :(得分:0)

在后台编写一个vba代码,只要工作簿打开,它就会更新列表。 步骤1:编写一个vba代码,根据零件清单中的行数将数据验证文件管理器添加到列中。 第2步:使用workbook_open fn在每次打开工作簿时运行宏

答案 1 :(得分:0)

我设法解决了这个问题。

我在网上找到了一些VBA代码,并在必要时进行了修改。请参阅以下代码,并附上解释,包括

 Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
' Ensure all lists are made from tables and that these tables are named
' in the Name Manager.
' When creating your Data Validation List, instead of selecting a range
' in 'Source', click within 'Source' and press 'F3'. Finally select your
' tables name.
Dim strValidationList As String
Dim strVal As String
Dim lngNum As Long

On Error GoTo Nevermind
strValidationList = Mid(Target.Validation.Formula1, 2)
strVal = Target.Value
lngNum = Application.WorksheetFunction.Match(strVal, ThisWorkbook.Names(strValidationList).RefersToRange, 0)

' Converts table contents into a formula
If strVal <> "" And lngNum > 0 Then
    Application.EnableEvents = False
    Target.Formula = "=INDEX(" & strValidationList & ", " & lngNum & ")"
End If

Nevermind:
    Application.EnableEvents = True

End Sub