打开Exlce,

确定,然后

右击查看代码,把这段代码复制到新建的文件里面

此时Excel会给出提示,选择否,,系统会提示保存,在保存的时候选择启用宏的工作簿然后保存,此时Excel下拉框多选就搞定了,最后,代码如下:

  1. Option Explicit
  2.  
  3. Sub Worksheet_Change(ByVal Target As Range)
  4. '让数据有效性选择 可以多选,重复选
  5. Dim rngDV As Range
  6. Dim oldVal As String
  7. Dim newVal As String
  8. If Target.Count > 1 Then GoTo exitHandler
  9.  
  10. On Error Resume Next
  11. Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
  12. On Error GoTo exitHandler
  13.  
  14. If rngDV Is Nothing Then GoTo exitHandler
  15.  
  16. If Intersect(Target, rngDV) Is Nothing Then
  17. 'do nothing
  18. Else
  19. Application.EnableEvents = False
  20. newVal = Target.Value
  21. Application.Undo
  22. oldVal = Target.Value
  23. Target.Value = newVal
  24. If oldVal = "" Then
  25. Else
  26. If newVal = "" Then
  27. Else
  28. Target.Value = oldVal _
  29. & ", " & newVal
  30. End If
  31. End If
  32. End If
  33.  
  34. exitHandler:
  35. Application.EnableEvents = True
  36. End Sub

优化后的代码

  1. Option Explicit
  2.  
  3. Sub Worksheet_Change(ByVal Target As Range)
  4. '让数据有效性选择 可以多选,重复选
  5. Dim rngDV As Range
  6. Dim oldVal As String
  7. Dim newVal As String
  8. If Target.Count > 1 Then GoTo exitHandler
  9.  
  10. On Error Resume Next
  11. Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
  12. On Error GoTo exitHandler
  13.  
  14. If rngDV Is Nothing Then GoTo exitHandler
  15.  
  16. If Intersect(Target, rngDV) Is Nothing Then
  17. 'do nothing
  18. Else
  19. Application.EnableEvents = False
  20. newVal = Target.Value
  21. Application.Undo
  22. oldVal = Target.Value
  23. Target.Value = newVal
  24. If oldVal = "" Then
  25. Else
  26. If newVal = "" Then
  27. Else
  28. If Target.Column <> 2 And Target.Column <> 3 And Target.Column <> 5 Then
  29. Dim oldValArray
  30. oldValArray = Split(oldVal, ",")
  31. Dim exitVal As Boolean
  32. exitVal = False
  33. Dim i As Integer
  34. Dim resultVal As String
  35. For i = 0 To UBound(oldValArray)
  36. If oldValArray(i) = newVal Then
  37. exitVal = True
  38. Else
  39. If resultVal = "" Then
  40. resultVal = oldValArray(i)
  41. Else
  42. resultVal = resultVal & "," & oldValArray(i)
  43. End If
  44. End If
  45. Next
  46. If exitVal = False Then
  47. If oldVal = newVal Then
  48. Target.Value = resultVal
  49. Else
  50. Target.Value = resultVal & "," & newVal
  51. End If
  52. Else
  53. Target.Value = resultVal
  54. End If
  55. End If
  56. End If
  57. End If
  58. End If
  59.  
  60. exitHandler:
  61. Application.EnableEvents = True
  62. End Sub

  

   

转载自:https://www.cnblogs.com/boosasliulin/p/5970120.html

Excel怎么下拉框多选的更多相关文章

  1. jquery实现下拉框多选

    一.说明 本文是利用EasyUI实现下拉框多选功能,在ComboxTree其原有的基础上对样式进行了改进,样式表已上传demo,代码如下 二.代码 <!DOCTYPE html PUBLIC & ...

  2. combobox中动态加入几个checkbox,实现下拉框多选

    combobox中动态加入几个checkbox,实现下拉框多选,将一个checkbox选中时其内容就会在combobox中显示出来,将另一个checkbox选中时其内容会跟在第一个checkbox的内 ...

  3. vue实现下拉框全选和输入匹配

    实际项目中的一个需求: 点击文本框,弹出带有复选框的选项,然后获取选中项的数据,传给后面的一个功能.在文本框输入内容,也会动态的匹配下拉列表,并且列表带有全选功能. 朴素的效果图: 我选择了用vue实 ...

  4. 使用poi解决导出excel内下拉框枚举项较多的问题

    废话少说,直接上代码: package com.fst.attachment.controller; import java.io.FileOutputStream; import org.apach ...

  5. easyui combotree下拉框多选赋值

    发现jquery.easyui.min.js 1.3.4版本的用setValues给多选下拉框赋值不成功,只能用1.3.1版本的 Html代码: <input id="ProductL ...

  6. checkboxlist 下拉框多选功能 ,模拟dropdownlist带复选框效果

    前台代码 01.<html xmlns="http://www.w3.org/1999/xhtml"> 02.<head runat="server&q ...

  7. ops-web运维平台-create.jsp-mootools下拉框-复选框

    create.jsp页面的,body部分 <body onload="Page.init('${pageError}','${pageMessage}',${isSubmit},tru ...

  8. 表id关联数据获取至页面,制作下拉框多选进行数据多项获取(字段处理)

     这周完成了一张表单,重点碰到以下问题: 1.freemaker获取年份的type值取year,类型直接为Long,传至后台和获取数据不需要转换: 2.freemaker获取日期type值为date, ...

  9. angularJs实现下拉框多选

    话不多说,直接上干货. 肯定需要下拉选插件.必须引入的是   注意 先后顺序 select2.css select2-bootstrap.css select2.min.js angular.min. ...

随机推荐

  1. [jQ]jQuery显式操作Checkbox,并用数组存储关联值的方案

    ---------------------------------------------------------------------------------------------------- ...

  2. javascript:getElementsByName td name

    问题:    今天写动态生成HTML表格的时候需要用到统计td内的数据,在生成的时候设置了td的name属性,但是document.getElementsByName("tdname&quo ...

  3. java-学习2

    第一节 Java语言介绍 1.Java的起源 Oak-->Java      交互式操作智能家居 2.Java的发展 Java1.0 Java1.2    JavaSE  :Java平台标准版  ...

  4. Java NIO Files

    Java NIO Files Files.exists() Files.createDirectory() Files.copy() Overwriting Existing Files Files. ...

  5. Java(8)中List的遍历方式

    ============Java8之前的方式==========Map<String, Integer> items = new HashMap<>();items.put(& ...

  6. javase中javax源码下载地址

    OracleJDK 和 OpenJDK 源码都可以参考. OpenJDK 源码下载 http://hg.openjdk.java.net/jdk7/jdk7/jdk/file 我主要是想下载 java ...

  7. Centos新增group和user

    新增group groupadd hadoop 新增用户 useradd -d /usr/hadoop -g hadoop -m hadoop 设置密码 passwd hadoop

  8. fiddler对浏览器、app抓包及证书安装(转)

    http://blog.csdn.net/u011608531/article/details/50838227 1.fiddler对浏览器抓包 1.1 对浏览器的http的抓包 Capturing开 ...

  9. pm2-zabbix 安装与配置

    官方GITHUB路径 https://github.com/greatcare/pm2-zabbix 环境要求,zabbix-agent zabbix-sender需要安装 npm安装要求 npm i ...

  10. vue element upload上传、清除等

    如果项目中可以使用file-list,那我们可以点击file-list删除文件列表: 有时候项目中是不要这个文件列表的,所以在上传成功以后,文件列表一直存在,要重新上传就必须刷新页面,所以我们需要手动 ...