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

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、备注

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

相关手记

365bet取款要多久 【吉他爱好者写歌秘笈】第2课 作词与作曲
365彩票最新版app下载 非洲真的很热吗?竟然还有非洲人说中国太热!
365bet取款要多久 全球顶尖的半导体二极管和整流器专家:Diotec(德欧泰克)
beat365英超欧冠比分 2024爆米花推薦10款高評價人氣品牌排行榜
365彩票最新版app下载 点钞机价格表:你需要知道的(2024年更新)
beat365英超欧冠比分 问道手游架设自己玩全攻略:从零搭建私人服务器教程