【VBA案例010】下拉多选

大家好!今天将为大家介绍在Excel中如何实现下拉多选功能,让数据输入更加灵活高效。

下拉多选功能不仅提高了数据输入的灵活性,还减少了输入错误的可能性,为我们的数据处理工作带来了更高的效率。

也许你见过使用表单控件的方式实现下拉多选,但是通过数据验证和VBA,我们同样能够轻松创建具有下拉多选功能的工作表。

以下是VBA代码,详细解析请看文末视频。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Sub Worksheet_Change(ByVal Target As Range)

Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
Dim fenGeFu As String

If Target.CountLarge > 1 Then Exit Sub
fenGeFu = "," '规定用逗号分隔

On Error Resume Next
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)

If rngDV Is Nothing Then Exit Sub
If Intersect(Target, rngDV) Is Nothing Then Exit Sub

Application.EnableEvents = False
newVal = Target.Value
Application.Undo
oldVal = Target.Value
Target.Value = newVal

If oldVal <> "" Then
If newVal <> "" Then
If InStr(fenGeFu & oldVal & fenGeFu, fenGeFu & newVal & fenGeFu) > 0 Then
If InStrRev(oldVal, newVal) + Len(newVal) - 1 = Len(oldVal) Then
Target.Value = Replace(oldVal, fenGeFu & newVal, "")
Else
Target.Value = Replace(oldVal, newVal & fenGeFu, "")
End If
Else
Target.Value = oldVal & fenGeFu & newVal
End If
End If
End If

Application.EnableEvents = True
End Sub

原始链接


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 richffan@outlook.com

文章标题:【VBA案例010】下拉多选

字数:315

本文作者:Rich Fan

发布时间:2023-10-23, 00:00:00

最后更新:2024-02-27, 08:17:39

原始链接:http://fanrich.github.io/2023/10/22/VBA/VBA%E6%A1%88%E5%88%97/%E3%80%90VBA%E6%A1%88%E4%BE%8B010%E3%80%91%E4%B8%8B%E6%8B%89%E5%A4%9A%E9%80%89/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。