【已解决】如何做excel表的下拉框多选

news/2024/9/23 3:25:46/

最近因为项目需求,要制作一个excel导入的模板,模板中要求某几列的下拉框是多选的。。不得不临时研究了一下vba。其间各种心酸不多说。。。。。。

首先,这个是需要启用宏,在vb编辑器里写代码,所以你要确保你的excel是可以启用宏的。如果是正式版的office是可以直接用(破解版就不知道了)。我用的是wps。需要装个插件(网上可下载)

 完成效果是这样的:可多选,不可重复。

第一步:在excel中加入ListBox控件,

第二步,在【设计模式】下右击控件,给控件注明相关属性,注意标红的三处。其中ListFillRange参数意为该listBox列表的值取自名为date的sheet的第一列(A列)中的1~3行。

     

第三步:双击该控件,进入编码区:注意【2】处,vb的方法名是生成的,例如需要选择【listBox1】再选择【change】会自动生成ListBox1_Change()这个方法,而不是写出来的。。。(做java的表示在这里卡了很久)

 下面贴上Sheet1(Sheet1)中的代码:

Private Sub ListBox1_Change()If ReLoad Then Exit Sub '见下方说明For i = 0 To ListBox1.ListCount - 1If ListBox1.Selected(i) = True Then t = t & "," & ListBox1.List(i)NextActiveCell = Mid(t, 2)
End SubPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Column = 3 And ActiveCell.Row > 1 Thent = ActiveCell.ValueReLoad = True '如果是根据单元格的值修改列表框,则暂时屏蔽listbox的change事件。With ListBox1For i = 0 To .ListCount - 1 '根据活动单元格内容修改列表框中被选中的内容If InStr(t, .List(i)) Then.Selected(i) = TrueElse.Selected(i) = FalseEnd IfNextReLoad = False.Top = ActiveCell.Top + ActiveCell.Height '以下语句根据活动单元格位置显示列表框.Left = ActiveCell.Left.Width = ActiveCell.Width.Visible = TrueEnd With
ElseListBox1.Visible = False                   
End If
End Sub

 Sheet2(date)中的代码:

Private Sub Worksheet_Change1(ByVal Target As Range)Sheets("Sheet1").ListBox1.ListFillRange = "data!a1:a" & Cells(1, 1).End(xlDown).Row
End Sub

模块1中的代码:

Public ReLoad As Boolean '开关listbox的change事件

 模块2中的代码:

Option Explicit
Sub ShowFM()
UserForm1.Show
End Sub

 这个适合vb小白急需完成功能参考,让大神见笑了。

这里是实现后的excel,有需要的可以直接下载了,稍微改改就能用了----多选下拉框下载链接

 


http://www.ppmy.cn/news/825043.html

相关文章

Excel表格实现下拉复选框多选

Excel表格实现下拉复选框多选 文章目录 1准备数据源2开启“开发工具”3具体实现3.1插入列表框控件3.2设置列表框控件属性3.3编辑VBA代码实现功能3.4调试运行 1准备数据源 打开要实现的excel表格,将选项数据放到sheet2 2开启“开发工具” 开启“开发工具”步骤&…

Excel 设置下拉框多选

问题描述 Excel的下拉框无法多选 解决办法 为Excel文件添加VB代码,文件后缀需由.xlsx变为.xlsm,否则仍无法实现该功能 操作步骤 ① 选中当前Sheet ② 右键选择查看代码 ③ 将代码复制进去 ④ 再将文件保存为.xlsm格式的即可 附代码如下 Option Exp…

EXCEL下拉框设置多选

我这里是微软office的版本,其它版本大同小异: 1、数据校验入口 2、设置数据 3、sheet页右击查看代码 4、复制下面代码进去: 5、效果如下: Option ExplicitSub Worksheet_Change(ByVal Target As Range) 让数据有效性选择 可…

Webpack5 SourceMap

文章目录 一、SourceMap有什么用二、怎么使用SourceMap三、需要注意的点 提示:以下是本篇文章正文内容,下面案例可供参考 一、SourceMap有什么用 为什么需要SourceMap 开发时我们运行的代码是经过 Webpack 编译压缩合并之后的,这样的目的是…

office中excel设置下拉框多选

我参照了这篇文章 https://www.php.cn/topic/excel/444717.html 这篇文章整体写得不错,但是有些小瑕疵 问题1:在模块1中保存。 这里并没有说清楚 具体是:VBA编辑器中--插入---模块 然后复制以下代码 Public ReLoad As Boolean 开关listb…

excel系列【下拉项二选一】

1 打开wps表格,选中需要增加二选一的单元格 2 选择数据菜单栏下的有效性 3 选择允许下方的序列选项 4 在来源下的输入框内填上是和否,中间要用英文的都好隔开,然后点击确定。例如输入√、;是、否。 5 在选中的单元格内就出现…

go-zero微服务实战——基本环境搭建

简介 项目架构来源于go-zero实战:让微服务Go起来。此对该项目有所删减,相对简单适合初学者。 省去了项目中每个服务占用独立docker的过程,省略了docker-compose的构建过程。每个服务是一个独立的程序不依赖与容器。 环境搭建 安装goctl …