2014-12-03 85 views
1

我有三个单元格区域(来自我的工作簿中的另一个表格),用于存储我希望显示在下拉列表(表单控件)列表中的值。我需要宏代码来重置单元格区域或命名区域,以便根据其他单元格值在下拉列表中定义选项。 。 我试过没有成功以下代码到目前为止:带条件数据的下拉列表

子DropDown11_Change()

如果范围( “A1”)= 1,则
(输入范围从工作表Sheet A1:A50)

elseif的范围( “A1”)= 2然后
(输入范围从Sheet2的A1:A50)

elseif的范围( “A1”)= 3然后
(输入范围从表Sheet 3 A1:A50)

结束如果
结束子

任何建议?

感谢

回答

0

这应该帮助你,无论是放置这些在标准模块(例如,模块1)。

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的模块以下(当你右+单击工作表Sheet1在VBA编辑器窗口中,选择视图代码...见下图):

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

Sheet1 Code

+0

如何选择我想要添加到具有命名范围的组合框的数据范围? – 2014-12-04 09:08:46

+0

@DhimasAFanji我更新了我的答案,包括命名范围方法。 – JasonAizkalns 2014-12-04 13:27:07

+0

这个运行,但是当单元格A1更改列表不会改变,除非我必须先点击, – 2014-12-05 11:57:58

0

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

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 
+0

,仍然无法正常工作.... – 2014-12-04 03:54:02

+0

只是为了澄清,你想要什么时候触发这个改变?下拉更改或单元格A1更改时? – 2014-12-04 17:03:00

+0

谢谢@Geoff,我希望在单元格A1更改时触发此更改。 – 2014-12-05 11:54:22