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

第一步:首先设置列的下拉框值
在这里插入图片描述

第二步:下拉框值设定

在这里插入图片描述

第三步:打开VBA编辑界面,选择表格名称(比如sheet1),鼠标右击下面的工作表。选择“查看代码”,就可打开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 exitHandler

On 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
Else
  Application.EnableEvents = False
  newVal = Target.Value
  Application.Undo
  oldVal = Target.Value
  Target.Value = newVal
  If Target.Column = 5 Then
    If oldVal = "" Then
      Else
      If newVal = "" Then
      Else
      Target.Value = oldVal & ", " & newVal
      End If
    End If
  End If
End If

exitHandler:
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 exitHandler

On 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
Else
  Application.EnableEvents = False
  newVal = Target.Value
  Application.Undo
  oldVal = Target.Value
  Target.Value = newVal
  If Target.Column = 5 Then
    If oldVal = "" Then
      Else
      If newVal = "" Then
        Else
        If InStr(oldVal, newVal) > 0 Then
        Target.Value = oldVal
        Else
      Target.Value = oldVal & ", " & newVal
      End If
        End If
    End If
  End If
End If

exitHandler:
Application.EnableEvents = True
End Sub

完成!

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值