答案 0 :(得分:2)
是的,您可以使用以下设置执行此操作。
在某些工作表设置中,一些命名范围,例如供应商列表(VendorList
)和其他一些包含产品的列表,例如AppleList
和MSList
:
例如产品清单:
在另一张纸上,您可以使用数据验证设置两个单元格。设置一个为VendorList
,另一个默认为例如AppleList
:
然后,在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
值更改为事件处理程序的一部分。