excel 多级下拉菜单 如何实现第一级下拉菜单更换选择内容后,第二级下拉菜单内容清空
rt,具体的说,第一级菜单和第二季菜单是想关联的,例如,当第一级下拉菜单“型号”类改变选择内容之后,第二级下拉菜单可以自动清空,显示空杯单元格,但后再让我进行第二级下拉菜...
rt,具体的说,第一级菜单和第二季菜单是想关联的,例如,当第一级下拉菜单“型号”类改变选择内容之后,第二级下拉菜单可以自动清空,显示空杯单元格,但后再让我进行第二级下拉菜单的选择。如何实现以上操作?谢谢!
展开
4个回答
展开全部
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 1 Then
Target.Offset(0, 1).Validation.Delete
Target.Offset(0, 1).ClearContents
Select Case Target
Case "型号"
Target.Offset(0, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="1,2,3,4"
Case "ni"
Target.Offset(0, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="5,6,7,8"
Case "ke"
Target.Offset(0, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="9,0,1,2"
Case "ta"
Target.Offset(0, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="3,4,5,6"
Case Else
Target.Offset(0, 1) = "未设置"
End Select
End If
End Sub
这个一级菜单要自己设置,我这个是在A列里放置一级菜单,当A列被更改时,对B列设置二级菜单。这个是工作表的CHANGE事件。
If Target.Count = 1 And Target.Column = 1 Then
Target.Offset(0, 1).Validation.Delete
Target.Offset(0, 1).ClearContents
Select Case Target
Case "型号"
Target.Offset(0, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="1,2,3,4"
Case "ni"
Target.Offset(0, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="5,6,7,8"
Case "ke"
Target.Offset(0, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="9,0,1,2"
Case "ta"
Target.Offset(0, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="3,4,5,6"
Case Else
Target.Offset(0, 1) = "未设置"
End Select
End If
End Sub
这个一级菜单要自己设置,我这个是在A列里放置一级菜单,当A列被更改时,对B列设置二级菜单。这个是工作表的CHANGE事件。
展开全部
假设你的一级菜单所在单元格为A1,二级菜单所在单元格为B1,工作表名称为sheet1.
alt+F11调出vba
工程资源管理器中双击sheet1
代码窗口复制以下代码,保存
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then Range("B1").ClearContents
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用数据有效性来实现。不过要先定义名称,然后再用序列,=INDIRECT()
用这个公式来引用你的那个型号的名称对应的数据列就行了
用这个公式来引用你的那个型号的名称对应的数据列就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询