簡體   English   中英

帶有條件數據的下拉列表

[英]Drop-down Lists with Conditional Data

我有三個單元格區域(來自工作簿的另一張表),用於存儲要在下拉列表(窗體控件)列表上顯示的值。 我需要宏代碼來重置單元格范圍,或者需要一個命名范圍來基於其他單元格值來定義下拉列表中的選項。 到目前為止,我已經嘗試了以下代碼,但均未成功:

子DropDown11_Change()

如果Range(“ A1”)= 1然后
(輸入范圍為sheet1 a1:a50)

ElseIf Range(“ A1”)= 2然后
(輸入范圍為sheet2 a1:a50)

ElseIf Range(“ A1”)= 3然后
(輸入范圍為sheet3 a1:a50)

萬一
結束子

有什么建議么?

謝謝

這應該可以幫助您,將它們中的任何一個都放置在標准模塊(例如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時,選擇查看代碼...請參見下圖):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM