2016-07-31 201 views

回答

2

是的,您可以使用以下設置來完成此操作。

在某些表單上設置了一些命名範圍,例如供應商列表(VendorList)和一些其他具有生產例如AppleListMSList

enter image description here

並且例如產品列表:

enter image description here

另一個頁面上,你可以建立兩個單元格的數據驗證。設一個爲VendorList,另一個默認爲例如AppleListenter image description here

而其他細胞驗證: enter image description here

然後,Worksheet代碼模塊中,把這個代碼爲Worksheet_Change事件:

Private Sub Worksheet_Change(ByVal Target As Range) 

    On Error GoTo CleanUp 

    If Not Intersect(Target, Range("Selection1")) Is Nothing Then 
     'suspend events 
     Application.EnableEvents = False 
     'remove existing validation 
     Range("Selection2").Validation.Delete 
     'add new validation to Selection2 
     Select Case Range("Selection1").Value 
      Case "Apple" 
        Range("Selection2").Validation.Add _ 
         Type:=xlValidateList, _ 
         Formula1:="=AppleList" 
      Case "Microsoft" 
        Range("Selection2").Validation.Add _ 
         Type:=xlValidateList, _ 
         Formula1:="=MSList" 
      Case Else 
       'do nothing 
     End Select 

    End If 

CleanUp: 
    Application.EnableEvents = True 

End Sub 

注碼暫停EnableEvents爲您正在將Range值更改爲事件處理程序的一部分。

+1

不需要vba,您可以使用= INDIRECT()根據第一個列表選擇創建對第二個列表的引用 –

相關問題