首页 > 其他分享 >Excel实现下拉菜单多选

Excel实现下拉菜单多选

时间:2023-08-09 11:45:07浏览次数:34  
标签:Target -- Excel Value newVal 下拉菜单 多选

Excel实现下拉菜单多选

注意事项

  • 需要用到VBA宏编程
  • WPS需要商业版才能启用VBA编程,office破解版(仅供学习)可以使用
  • 本文所有操作均在office2021上进行

 

一、(已有可忽略)打开office开发者工具

  • "文件“ --> "选项" --> "自定义功能区" --> 勾上"开发者工具"

 

二、设置表格可选项

  • 建议单独将所有可选项放在一个sheet中

 

三、设置单元格下拉菜单多选

1、选择需要设置的单元格

  • 我这里选择A2:A7

 

2、先设置下拉菜单

  • 数据 --> 数据校验 --> 数据校验

 

  • 允许的数据选择"列表",来源选择第二个sheet中对应的选项

 

3、设置允许多选

1)右键工作表,查看源码

 

2)编辑VB代码

注意:

  • 修改If Target.Column = 1 Then行,这里表示哪一列支持下拉框多选,改成实际的列
    • 例如1表示A列
    • If Target.Column = 12 Or Target.Column = 13 Then 表示12列和13列的下拉框都支持多选
  • '开头的行为注释行,不会执行,直接忽略即可
Private Sub Worksheet_Change(ByVal Target As Range)
' Developed by Contextures Inc.
' www.contextures.com
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 Target.Column = 1 Then       
    If oldVal = "" Then
      'do nothing
      Else
      If newVal = "" Then
      'do nothing
      Else
      Target.Value = oldVal _
        & ", " & newVal
'      NOTE: you can use a line break,
'      instead of a comma
'      Target.Value = oldVal _
'        & Chr(10) & newVal
      End If
    End If
  End If
End If

exitHandler:
  Application.EnableEvents = True
End Sub

 

3)保存自定义宏配置

Ctrl+s会弹出警告窗口,选择No

  • Yes 不会保存VBA宏配置,默认的 .xlsx不支持保存自定义宏
  • No 另存为其他类型个文件,.xlsm 后缀为支持宏的文件

 

 

四、配置office支持自定义宏

  • 不配置启用宏,重新打开xlsm文件,之前设置的宏是不会生效的

文件 --> 选项 --> 信任中心 --> 信任中心配置 --> 宏配置 --> 启用VBA宏

 

五、查看xlsm

标签:Target,--,Excel,Value,newVal,下拉菜单,多选
From: https://www.cnblogs.com/linagcheng/p/17616435.html

相关文章

  • java XSSFWorkbook excel 公式计算
    excel公式计算//创建一个工作薄XSSFWorkbookworkbook=newXSSFWorkbook();//如果是最后一列添加一个求和计算,将结果放到同一列最后一个。dataLists数据列表XSSFSheetsheet=workbook.getSheet(replaceSpecStr(sheetNames.get(0)));Rowrow......
  • c#操作excel方式二:采用OleDB操作Excel文件
    内容:1.dataset转excel函数代码         2.excel转dataset函数代码        3.运用实例:       3.1写入excel       3.2读取exceldataset格式写入excel函数如下:publicvoidDSToExcel(stringPath,DataSetoldds){//先得......
  • 【Excel第一讲】认识Excel
     配套课程王佩丰Excel基础教程24讲完整版 笔记(更新中):链接:https://pan.baidu.com/s/1yiuhralPHzXzNIzPXcVOfQ提取码:mnd2......
  • DataFrame 存为带格式的excel文件
    importpandasaspddata={'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'Salary':[50000,60000,45000],'Location':['NY','CA',�......
  • 微信公众号HTML5如何预览EXCEL、word、ppt、pdf等文件
    1、pfile文件预览   很简单一句话window.open('http://www.pfile.com.cn/api/profile/onlinePreview?url='+encodeURIComponent(“文档地址”));使用了一段时间,简单完美,强烈推荐!!! 2、 officeonlineleturl="https://view.officeapps.live.com/op/view.aspx?src="+......
  • c#操作excel方式一:stream简单读写excel
    需要命名空间usingSystem.IO;界面:记得添加openFileDialog注意名字,改成跟代码里的对应写文件按钮代码:privatevoidbutton2_Click(objectsender,EventArgse){inti=0;StreamWriteraFile=null;aFile=File.CreateTex......
  • Java读取Excel中的合并单元格
    1、 Maven仓库下载导入在pom.xml中配置maven路径,指定依赖,如下:<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.1</version></dependency><dependency><groupId>......
  • c#操作excel方式四-Aspose控件
     参考资料: 这位大大写得不错,还有复杂报表的生成,有兴趣的可以看看这里还有一篇Aspose基础知识的方法1:读取excel内容到datableDataTable_dt_Data;初始化表的列privatevoidinitDataTable(){_dt_Data=newDataTable();_dt_Data.Columns......
  • c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件
     1、引用Microsoft.Office.Interop.Excel.dll2、引用命名空间、使用别名usingSystem.Reflection;usingExcel=Microsoft.Office.Interop.Excel;  3.写入excel写入函数publicvoidToExcel(stringstrTitle){intnMax=9;intnMin=4......
  • 从 Word 复制表格到 Excel 如何保留多行单元格
    思路是在Word中将换行符替换为一串自定义的文本,然后将其粘贴到Excel中,再在Excel中将特殊文本替换回换行。具体可参考下面的链接。Retainmulti-linecellswhenpastingWordtableintoExcel-MicrosoftCommunityHowdoIcopyWordtablesintoExcelwithoutsplitt......