|
既然你坚持要把有效性全都做在代码里,那么。。。。好吧。。。。。- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- If Intersect(Target, [a2:d100]) Is Nothing Then Exit Sub '限定作用范围为[a2:d100],超出此范围不触发事件
- c = Target.Column '当前单元格的列
- If c > 1 Then sj = Target.Offset(0, -1) '前一单元格的内容(表示上一级的数据)
- If c = 1 Then '列数为1,序列为"A,B,C"
- xstr = "小学管理中心,中学管理部,职业学校管理科" '一级数据
- ElseIf c = 2 Then
- If sj = "小学管理中心" Then
- xstr = "第一小学,第二小学,第三小学"
- ElseIf sj = "中学管理部" Then
- xstr = "六中,八中,十一中,二十四中"
- ElseIf sj = "职业学校管理科" Then
- xstr = "软件学院,职业培训学校"
- ElseIf sj = "" Then
- xstr = "第一小学,第二小学,第三小学,六中,八中,十一中,二十四中,软件学院,职业培训学校"
- End If
- ElseIf c = 3 Then
- If InStr(sj, "小学") > 0 Then
- xstr = "一年级,二年级,三年级"
- ElseIf InStr(sj, "中") > 0 Then
- xstr = "初一(1)班,初一(3)班,初一(6)班"
- ElseIf sj = "软件学院" Or sj = "职业培训学校" Then
- xstr = "XX部,XXX部"
- ElseIf sj = "" Then
- xstr = "一年级,二年级,三年级,初一(1)班,初一(3)班,初一(6)班,XX部,XXX部"
- End If
- ElseIf c = 4 Then
- If InStr(sj, "年级") > 0 Then
- xstr = "一班,三班,五班"
- ElseIf InStr(sj, "初") > 0 Then
- xstr = "张三,李四,王五"
- ElseIf sj = "" Then
- xstr = "一班,三班,五班,张三,李四,王五"
- End If
- End If
- If xstr = "" Then Exit Sub
- With Target.Validation '根据xstr的值设置有效性
- .Delete
- .Add Type:=xlValidateList, Formula1:=xstr
- End With
- End Sub
复制代码 |
|