2014-12-03 41 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