这应该帮助你,无论是放置这些在标准模块(例如,模块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
如何选择我想要添加到具有命名范围的组合框的数据范围? – 2014-12-04 09:08:46
@DhimasAFanji我更新了我的答案,包括命名范围方法。 – JasonAizkalns 2014-12-04 13:27:07
这个运行,但是当单元格A1更改列表不会改变,除非我必须先点击, – 2014-12-05 11:57:58