在之前的经验介绍中介绍了Excel设置下拉框,但excel自身的下拉框设置智能设置为单选,如何实现下拉框多选?要实现多项选择,从功能上要解决:
可以实现多选,用“,”或者“、”或者空格连接;
可以较便捷的取消选择。
工具/原料
excel/WPS表格
方法/步骤
1/5
要设置多选需要使用vb命令,需在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