select实现多选下拉框功能(excel下拉框实现复选)

在之前的经验介绍中介绍了Excel设置下拉框,但excel自身的下拉框设置智能设置为单选,如何实现下拉框多选?要实现多项选择,从功能上要解决:

可以实现多选,用“,”或者“、”或者空格连接;

可以较便捷的取消选择。

工具/原料

excel/WPS表格

方法/步骤

1/5

要设置多选需要使用vb命令,需在Excel中通过“文件”>“选项”>“自定义功能区”>“开发工具”>“确定”设置使用开发工具。

select实现多选下拉框功能(excel下拉框实现复选)

2/5

3/5

4/5

由于项目初期,对选项设置的还不完善,经常有需要填入选项外的内容的情况,为此建议在“数据”>“数据验证”>“出错警告”中选择样式为“警告”,当输入不在选项范围内的内容时可以继续输入。

5/5

启用代码后,需要保存成.xlsm格式才可保存代码,需将文件另存为启用宏的工作簿。

注意事项

WPS需要安装插件才可使用宏命令,可通过互联网搜索易得。网上有很多相关的代码,经实践,没有找到完全合适好用的,最终采用了一种代码,并进行了修改,最终实现上述两点功能。代码如下:

Option Explicit

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 oldVal = “” Then

Else

If newVal = “” Then

Else

If InStr(newVal, oldVal) > 0 Then

Target.Value = newVal

Else

If InStr(oldVal, newVal) > 0 Then

Target.Value = newVal

Else

Target.Value = oldVal _

& “、 ” & newVal

End If

End If

End If

End If

End If

exitHandler:

Application.EnableEvents = True

End Sub

发表评论

登录后才能评论