2016-07-31 26 views

Antwort

2

Ja, Sie können dies mit der folgenden Einrichtung tun.

Auf einigen Blattaufbau einige benannte Bereiche, z. eine Verkäuferliste (VendorList) und einige andere Listen mit Produktionen z.B. AppleList und MSList:

enter image description here

Und z.B. eine Liste der Produkte:

enter image description here

Auf einem anderen Blatt, können Sie zwei Zellen mit Daten Validierungen Set-up. Setzen Sie eins auf VendorList und das andere standardmäßig auf z.B. AppleList: enter image description here

Und die andere Validierungs Zellen: enter image description here

Dann wird in dem Worksheet Code-Modul, für das Worksheet_Change Ereignis in diesem Code setzen:

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 

Notieren Sie sich den Code EnableEvents aussetzt als Sie ändern Range Werte als Teil des Ereignishandlers.

+1

Keine Notwendigkeit für vba, Sie können = INDIRECT() verwenden, um einen Verweis auf die zweite Liste basierend auf der ersten Listenauswahl zu erstellen –