关于EXCLE 下拉框多选的设置

article/2025/9/17 23:08:57

关于EXCLE 下拉框多选的设置。
本文转载于:https://www.cnblogs.com/boosasliulin/p/5970120.html
本文转载于:https://blog.csdn.net/qq_33269520/article/details/81173811

打开Exlce,设置数据有效性
在这里插入图片描述
确定,然后
在这里插入图片描述
右击查看代码,把这段代码复制到新建的文件里面
在这里插入图片描述
此时Excel会给出提示,选择否,
在这里插入图片描述
系统会提示保存,在保存的时候选择启用宏的工作簿然后保存,此时Excel下拉框多选就搞定了,最后,代码如下:

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
Target.Value = oldVal _
& ", " & newVal
End If
End If
End If

exitHandler:
Application.EnableEvents = True
End Sub

上面代码是为整个EXCLE设置多选,下面这段代码是为某行,或者
某几行设置多选
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 Target.Column = 3 Or Target.Column = 3 Then '这里规定好哪一列的数据有效性是多选的,A列是第1列,依次类推,如3就是C列,7就是G列,设置多个用Or连接
If oldVal = “” Then
'do nothing
Else
If newVal = “” Then
'do nothing
Else
If InStr(1, oldVal, newVal) <> 0 Then '重复选择视同删除
If InStr(1, oldVal, newVal) + Len(newVal) - 1 = Len(oldVal) Then '最后一个选项重复
Target.Value = Left(oldVal, Len(oldVal) - Len(newVal) - 1)
Else
Target.Value = Replace(oldVal, newVal & “,”, “”) '不是最后一个选项重复的时候处理逗号
End If
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
End If

exitHandler:
Application.EnableEvents = True
End Sub


http://chatgpt.dhexx.cn/article/5Uis5Oy8.shtml

相关文章

php下拉多选框,excel下拉框多选打勾的设置方法

excel下拉框多选打勾的设置方法 一、显示“开发工具”选项卡。打开Excel2010,点击左上方“文件”图标。点击“选项”,弹出“Excel选项”对话框,在“自定义功能区”中勾选“开发工具”,点击确定。 二、设置下拉列表的选项内容。将工作表sheet2名称修改为“data”,并在A列输入…

Excel 设置下拉框多选

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

Excel下拉框多选(支持再次选择已选项会取消选择)

比如我做一个表格&#xff0c;其中一项是“部门类型”&#xff0c;这一项中&#xff0c;选项有&#xff1a;财务部&#xff0c;人事部&#xff0c;开发部&#xff0c;销售部 用户在选择的时候&#xff0c;可以选择&#xff1a;人事部&#xff0c;开发部 那么在“部门类型”这个…

Excel下拉框设置多选

Excel下拉框一般只能单选&#xff0c;但有时候需要多选&#xff0c;多选的方法如下&#xff1a; 以office 2016中的excel为例&#xff1a; 1、数据验证入口 2、设置数据 3、sheet页右击查看代码 4、复制下面代码进去&#xff1a; 5、效果如下&#xff1a; VB代码如下&#xf…

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

最近因为项目需求&#xff0c;要制作一个excel导入的模板&#xff0c;模板中要求某几列的下拉框是多选的。。不得不临时研究了一下vba。其间各种心酸不多说。。。。。。 首先&#xff0c;这个是需要启用宏&#xff0c;在vb编辑器里写代码&#xff0c;所以你要确保你的excel是可…

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

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

【C语言】用循环语句输出菱形

//用循环语句输出菱形 #include <stdio.h> int main() {int i,j;for(i0;i<3;i) //上4行{for(j0;j<3;j) //上4行的左边{if(ij<2)printf(" ");elseprintf("*");}for(j4;j<6;j) //上4行的右边{if(j-i>4)printf(" ");…

用c语言输出一个菱形

这是一道课后题作业&#xff0c;针对菱形的空格我使用了" "的输出方式&#xff0c;应该还有更好的方法&#xff1f;是不是还有格式化字符能直接居中对正&#xff1f;待思考。 代码如下&#xff1a; #include<stdio.h>int main(){int i, j, k, a;printf("…

C语言输出菱形不是梦

如果对其他经典算法感兴趣&#xff0c;可以点击我的主页&#xff0c;有惊喜哟 给大家看看咱的诚意&#xff1a; 先来个流程图&#xff08;虽然只写了一半&#xff0c;但是下面的一半比猫画虎就行&#xff09; 废话不多说上代码&#xff08;欢迎交流哟&#xff09;&#xff1a…

[C语言]——利用循环输出菱形

题目要求如下&#xff1a; 用C语言输出以下图形&#xff1a;*************************************************************************************总体思路&#xff1a; 将菱形拆分开&#xff0c;一行一行看。 前七行是由递减的空格和递增符号组成&#xff0c; 后六行是由…

【C语言】输出“*”菱形图案

问题&#xff1a;在屏幕上输出一个菱形图案   目标图案&#xff1a;      实现思路&#xff1a;   由目标图案可知&#xff1a;该图案共有13行&#xff0c;每行除了有“&#xff0a;”外&#xff0c;第一个“&#xff0a;”之前还包括空格。我们可以把整个图案分为…

【c++】C语言之输入行数,输出实心菱形和空心菱形

输出菱形 编程自动输出如下图形&#xff0c;由屏幕输入指定行数&#xff08;奇数&#xff09;&#xff0c;实现后封装为函数&#xff0c;以行数作为参数值。 输入一个n,表示左边两个菱形图形&#xff08;实心和空心&#xff09;的行数&#xff08;或者一半行数&#xff09; 利…

<C语言程序实例>C语言实现菱形输出

<C语言程序实例>C语言实现菱形输出 前言 这一问题无论是在C语言还是别的编程语言的入门学习中都会遇到&#xff0c;还是比较常见的&#xff0c;要学一下的。 一、菱形 我们先要看一下我们要输出的菱形是什么样子的。这里举一个例子简单说明一下: 大家首先要知道一点…

C语言之打印菱形

小编最近在刷题的时候遇到很多使用循环的题目&#xff0c;对于这类题目&#xff0c;小编思维逻辑有时候也会很迷&#xff0c;现在来分享一下经典的案列&#xff0c;帮助大家锻炼一下逻辑 打印如图所示的菱形 通过研究分析&#xff0c;菱形可以分为上三角部分和下三角部分 那我…

c语言:输出一个菱形图案

输出图案样式如下&#xff1a; 方法&#xff1a;运用循环内嵌循环。通过看每一行空格与星号的关系来确定循环&#xff0c;外面加个循环&#xff0c;里面内嵌两个循环。 #include<stdio.h> int main() {int i, j, k;for (i 0; i < 3; i){for (j 0; j < 2 - i; j…

【C语言】利用循环输出菱形

输出菱形的思想主要是用了等差数列 an a1 (n - 1) * d 来求每个循环的约束条件&#xff1b; 一个完整的菱形必须是由空格 、星形 来组成&#xff0c;切分为两部分。 题目效果如下: //要求输出如下图形************* 代码如下: #include "stdio.h" int main(){…

C语言——用“*”输出一个菱形

如何输出如图所示的菱形 先要将菱形分为上下两个三角形&#xff08;例如图示&#xff0c;上为7行的正三角&#xff0c;下为6行的倒三角&#xff09;&#xff0c;接下来通过两个循环分别输出这两部分。首先设置变量line代表上行数&#xff0c;通过键盘输入&#xff0c;接着设置三…

c语言:输出一个菱形图案!

c语言&#xff1a;输出一个菱形图案&#xff01; 给定一个正的奇数n,要求输出一个高为n的正菱形&#xff0c; 如上图所示&#xff0c;是一个11行高的菱形。 怎么设计&#xff1a; 首先把这个图分成三个部分&#xff1a; 1&#xff0c;上半部分 2.中间最长的一部分 3.下半部分…

编写C语言程序 输出一个菱形

用C语言程序实现打印出一个菱形&#xff0c;观察菱形&#xff0c;它的每一行前面会有空格&#xff0c;要打印菱形&#xff0c;首先要算出空格多少的规律&#xff0c;以及每行*的数目&#xff0c;把菱形分为上下两部分打印&#xff0c;上半部分规律&#xff1a;观察最长的一行&a…

C语言输出菱形

咱们输出的是一个13行的菱形&#xff0c;可以分成两部分&#xff0c;第一部分7行星星逐渐增多的&#xff0c;第二部分6行星星逐渐减少&#xff0c;所以代码也可以分成两部分。第一部分是星星最多13个 每次增加两个星星 减少一个空格 &#xff0c;第二部分是星星最多11个&#x…