下拉列表与条件数据

我有三个单元格范围(从我的工作簿中的另一个工作表)存储我想要显示在下拉列表(表单控件)列表中的值。 我需要macros代码来重置一个单元格范围,或者一个命名的范围来定义基于其他单元格值的下拉列表中的选项。 。 我已经尝试了以下代码,迄今为止没有成功:

Sub DropDown11_Change()

如果范围(“A1”)= 1那么
(从sheet1 a1:a50的input范围)

ElseIf范围(“A1”)= 2然后
(从sheet2 a1:a50的input范围)

否则如果范围(“A1”)= 3那么
(从sheet3 a1:a50的input范围)

万一
结束小组

有什么build议么?

谢谢

这应该帮助你,把它们放在一个标准模块(例如Module1)中。

Sub DropDown1_Change() Dim ddFillRange As String If Sheet1.Range("A1") = 1 Then ddFillRange = "Sheet1!A1:A50" ElseIf Sheet1.Range("A1") = 2 Then ddFillRange = "Sheet2!A1:A50" ElseIf Sheet1.Range("A1") = 3 Then ddFillRange = "Sheet3!A1:A50" End If Sheet1.Shapes("Drop Down 1").ControlFormat.ListFillRange = ddFillRange End Sub 

如果你想使用命名的范围,你可以使用:

 Sub DropDown1_Change() Dim ddFillRange As String If Sheet1.Range("A1") = 1 Then ddFillRange = Range("NamedRange1").Name ElseIf Sheet1.Range("A1") = 2 Then ddFillRange = Range("NamedRange2").Name ElseIf Sheet1.Range("A1") = 3 Then ddFillRange = Range("NamedRange3").Name End If Sheet1.Shapes("Drop Down 1").ControlFormat.ListFillRange = ddFillRange End Sub 

然后,在单元格A1发生这种情况时,您需要将以下内容放在Sheet1的模块中(当您在VBA编辑器窗口中右键单击Sheet1时,select查看代码…见下图):

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Range("A1")) Is Nothing Then DropDown1_Change End Sub 

Sheet1代码

我使用命名范围做了类似的事情。 这是一个应该有所帮助的例子。

 Sub DropDown11_Change() Dim dropdown As String If Range("A1") = 1 Then '(input range from sheet1 a1:a50) dropdown = "=Sheet1!R1C1:R50C1" ElseIf Range("A1") = 2 Then '(input range from sheet2 a1:a50) dropdown = "=Sheet2!R1C1:R50C1" ElseIf Range("A1") = 3 Then '(input range from sheet3 a1:a50) dropdown = "=Sheet3!R1C1:R50C1" End If ActiveWorkbook.Names.Add Name:="DynamicList", RefersToR1C1:=dropdown End Sub 
Interesting Posts