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,我已经成功地将其应用到工作中。谢谢你的帮助。