Vba 不带命名范围的嵌套下拉列表

Vba 不带命名范围的嵌套下拉列表,vba,drop-down-menu,excel,Vba,Drop Down Menu,Excel,我是新手,非常感谢你的耐心。我在一张纸上列出了一长串病例编号和相关名称,每个病例编号有几个名称。在工作簿中的不同位置,我希望用户从下拉列表中选择一个案例编号(可以使用动态命名范围),然后在另一个下拉列表中选择一个相关名称 因为有太多的案例编号,而且它们会改变,所以我不能在第二个下拉列表中使用命名范围。有VBA方法可以做到这一点吗?假设您的案例编号位于表2的第1行,每个案例编号下面都有相关名称,您的案例编号下拉列表位于单元格B1中,您的相关名称下拉列表位于单元格B2(定义为带有列表名称的数据验证)

我是新手,非常感谢你的耐心。我在一张纸上列出了一长串病例编号和相关名称,每个病例编号有几个名称。在工作簿中的不同位置,我希望用户从下拉列表中选择一个案例编号(可以使用动态命名范围),然后在另一个下拉列表中选择一个相关名称


因为有太多的案例编号,而且它们会改变,所以我不能在第二个下拉列表中使用命名范围。有VBA方法可以做到这一点吗?

假设您的案例编号位于表2的第1行,每个案例编号下面都有相关名称,您的案例编号下拉列表位于单元格
B1
中,您的相关名称下拉列表位于单元格
B2
(定义为带有列表名称的数据验证),使用以下工作表宏更新
B2

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rgNames As Range, rgFoundCase As Range

If Not Intersect(Target, [B1]) Is Nothing Then

    'turn off updates to speed up code execution
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
        .DisplayAlerts = False
    End With

    Set rgFoundCase = Sheets("Sheet2").Rows(1).Find(What:=[B1], After:=Sheets("Sheet2").Cells(1, 1), LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)

    Set rgNames = rgFoundCase.Offset(1).Resize(rgFoundCase.End(xlDown).Row - 1)

    ActiveWorkbook.Names.Add Name:="ListNames", RefersTo:=rgNames

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
        .DisplayAlerts = True
    End With

End If

End Sub

您的案例编号和相关名称是如何安排的?使用过滤器如何?对于不熟悉Excel的用户,电子表格将是一个实时文档,因此我认为我不能使用过滤器。电子表格需要不断更新自身(即,用户添加新的案例编号和名称,下拉列表需要相应地对应)。除非我不太了解过滤器…过滤器的可用选项将自动更新。我不知道它是否适用于您,但很容易尝试:选择范围(可以是整列),然后选择数据选项卡和筛选按钮。完成。(在VBA中,就像简单的-
范围(“A1:C4”).AutoFilter
)(Excel 2010)我想我明白你的意思了:我可以在过滤列表上使用动态范围来填充我的下拉列表(在另一张表上)。过滤器由第一个下拉列表的内容定义。这将是一个很好的解决方案,我会尝试。谢谢nutsch,我已经成功地将其应用到工作中。谢谢你的帮助。