[英]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
我已經利用命名范圍做了類似的事情。 這是一個應該也有幫助的例子。
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.