首页 >> 大全

Excel下拉列表值多选,用到宏代码

2023-09-21 大全 39 作者:考证青年

第一步:首先设置列的下拉框

第二步:下拉框值设定

第三步:打开VBA编辑界面,选择表格名称(比如),鼠标右击下面的工作表。选择“查看代码”,就可打开VBA编辑界面。

步骤3:输入代码-生成下拉框多选

_宏代码批量选中多个工作表_宏下拉菜单的制作

在下图中,5 Then代表的意思为 “第五列”,修改为目标列数即可。

比如下述案例选中的那行,下拉框在第五列,则改为5 Then即可

往下看有图文代码合集(可复制直接使用)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
If Target.Count > 1 Then GoTo exitHandlerOn Error Resume Next
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
If rngDV Is Nothing Then GoTo exitHandler
If Intersect(Target, rngDV) Is Nothing Then'do nothing
ElseApplication.EnableEvents = FalsenewVal = Target.ValueApplication.UndooldVal = Target.ValueTarget.Value = newValIf Target.Column = 5 ThenIf oldVal = "" ThenElseIf newVal = "" ThenElseTarget.Value = oldVal & ", " & newValEnd IfEnd IfEnd If
End IfexitHandler:
Application.EnableEvents = True
End Sub

到了这一步已经设置完成了,可以正常使用。

宏下拉菜单的制作_宏代码批量选中多个工作表_

题外话:如果出现报错,代表excel表类型不正确选择 【否】然后重新选择文件类型未xlsm类型文件,重新打开xlsm文件就可以啦!

另外,如果像设置为多选框值不可重复的话,需要修改下列部分代码黄框里面直接复制修改,主要改动在箭头处,因为有if -else闭环整个复制代码也贴出来了:

整部分代码复制:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
If Target.Count > 1 Then GoTo exitHandlerOn Error Resume Next
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
If rngDV Is Nothing Then GoTo exitHandler
If Intersect(Target, rngDV) Is Nothing Then'do nothing
ElseApplication.EnableEvents = FalsenewVal = Target.ValueApplication.UndooldVal = Target.ValueTarget.Value = newValIf Target.Column = 5 ThenIf oldVal = "" ThenElseIf newVal = "" ThenElseIf InStr(oldVal, newVal) > 0 ThenTarget.Value = oldValElseTarget.Value = oldVal & ", " & newValEnd IfEnd IfEnd IfEnd If
End IfexitHandler:
Application.EnableEvents = True
End Sub

完成!

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了