2016-07-31 149 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()根据第一个列表选择创建对第二个列表的引用 –

相关问题