excel表格设置下拉框选项并具有多选功能

背景

微软的excel软件,后缀为xlsx的表格文件。想要设置下拉框选项,并且可多选

设置下拉框(共3步)

1、选中单元格,点击数据,点击数据验证

2、在弹出的界面选择设置---->序列

3、输入想要设置的内容。内容之间用  英文  逗号隔开

4、看看效果

现在完成了设置下拉框,现在能够单选内容,如果没有多选的需求,到这一步就结束了。如果要多选,需要往表格中插入一段VBA代码。

下拉框多选(共3步)

1、确保设置表格类型为启用宏的工作簿.xlsm

2、查看表格的代码

3、在这里粘贴一段代码

Private Sub Worksheet_Change(ByVal Target As Range)
    ' Updated by Extendoffice 20240118
    Dim xRng As Range
    Dim xValue1 As String
    Dim xValue2 As String
    Dim delimiter As String
    Dim TargetRange As Range

    ' 设置目标范围为当前工作表的已用范围
    Set TargetRange = Me.UsedRange ' 用户可以在此处更改目标范围
    delimiter = ", " ' 用户可以在此处更改分隔符

    ' 如果目标范围超过一个单元格或不在目标范围内,则退出
    If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub

    On Error Resume Next
    ' 查找包含数据验证的单元格
    Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
    If xRng Is Nothing Then Exit Sub

    Application.EnableEvents = False ' 禁用事件以避免递归调用

    xValue2 = Target.Value
    Application.Undo ' 撤销上一步操作
    xValue1 = Target.Value
    Target.Value = xValue2

    ' 只在下拉框单元格中进行合并操作
    If xValue1 <> "" And xValue2 <> "" And Not Intersect(Target, xRng) Is Nothing Then
        ' 如果xValue1和xValue2不同且未被包含,则合并值
        If Not (xValue1 = xValue2 Or _
                InStr(1, xValue1, delimiter & xValue2) > 0 Or _
                InStr(1, xValue1, xValue2 & delimiter) > 0) Then
            Target.Value = xValue1 & delimiter & xValue2
        Else
            Target.Value = xValue1 ' 否则保持原值
        End If
    End If

    Application.EnableEvents = True ' 重新启用事件
    On Error GoTo 0 ' 重置错误处理
End Sub

4、备注

修改代码后测试一下其它非下拉框的单元格能否正常写入、修改内容。因为之前在网上复制的一段代码,会出现修改原始内容变成追加新内容,上面的代码是修改后的,经过我的初步使用没有问题。若是发现问题欢迎留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值