WPS Excel中配置下拉多选(VBA)
网上找到两种方案,一种利用数据选择其他单元格,也就是在其他单元格建数据。需求是模板,不合适
这里我用的VBA,踩了挺多坑,详细说下
- 首先更新WPS为最新版,确保可用VBA和JSA 确定使用VBA还是JSA,两种语法不同
- VBA较老,语法可靠些,推荐(本文使用VBA)
- JSA为新引入JS,但支持较少,不太推荐
- 如选择VBA,请跳转至以下链接查看详情。若为JSA,请另寻方案
VBA配置借鉴了csdn一篇博客,以下为相关链接:
CSDN-指南:https://blog.csdn.net/qq_36448758/article/details/134162812
金山文档-多选方案:https://www.kdocs.cn/article/2C6CD5AA30.html
以下为打开方式


默认为空,先创建一个新的宏再编辑

此处为VBA编辑,注意在红色框处写入代码



若不生效的话再切回WPS点击运行

最后附上版本图

以下为VBA代码
不选择值时显示空,选址值后替换空,用、间隔
1 Private Sub Worksheet_Change(ByVal Target As Range)
2 Dim oldVal As String
3 Dim newVal As String
4 Dim delimiter As String
5 delimiter = "、" ' 设置分隔符
6
7 ' 限定只在B列进行处理
8 If Not Intersect(Target, Me.Range("B:B")) Is Nothing Then
9 If Target.Count > 1 Then Exit Sub
10
11 On Error Resume Next
12 Application.EnableEvents = False
13 newVal = Trim(Target.Value) ' 去除新值两侧空格
14 Application.Undo
15 oldVal = Trim(Target.Value) ' 去除旧值两侧空格
16
17 If oldVal <> "" And newVal <> "" Then
18
19 ' 如果最终值为空,保持为空
20 If InStr(Target.Value, "空") Then
21 Target.Value = newVal ' 移除新值(如果它出现在开头)
22 Else
23 If InStr(1, oldVal, newVal) > 0 Then
24 ' 移除新值及其前面的分隔符
25 Target.Value = Replace(oldVal, delimiter & newVal, "")
26 Target.Value = Replace(Target.Value, newVal, "") ' 移除新值(如果它出现在开头)
27 Else
28 ' 新值不在旧值中,则添加它
29 If oldVal <> "" Then
30 Target.Value = oldVal & delimiter & newVal
31 Else
32 Target.Value = newVal
33 End If
34 End If
35 End If
36 End If
37
38 ' 清理多余的分隔符
39 Target.Value = Application.Trim(Target.Value) ' 去掉两侧空格
40 If Left(Target.Value, Len(delimiter)) = delimiter Then
41 Target.Value = Mid(Target.Value, Len(delimiter) + 1)
42 End If
43 If Right(Target.Value, Len(delimiter)) = delimiter Then
44 Target.Value = Left(Target.Value, Len(Target.Value) - Len(delimiter))
45 End If
46
47 ' 如果最终值为空,保持为空
48 If Target.Value = "" Then
49 Target.Value = "空" ' 设置为一个空字符串
50 ElseIf Target.Value = "0" Then
51 Target.Value = "空" ' 设置为一个空字符串
52 ElseIf Target.Value = 0 Then
53 Target.Value = "空" ' 设置为一个空字符串
54 End If
55 End If
56
57 exitHandler:
58 Application.EnableEvents = True
59 End Sub

WPS Excel中配置下拉多选(VBA)的更多相关文章
- Excel中添加下拉框
数据->数据验证->数据验证 设置—>允许下拉框中选择序列,来源中写下拉选项,每个选项之间用逗号隔开
- excel中添加下拉候选
这里简单记录下如何在Excel2013中添加下拉候选. 首先有个思路是,下拉候选也就意味着数据被限制在一个范围之内,因此应该联想到数据验证相关的设置. 选中单列或单元格,在[数据]下的[数据验证]中选 ...
- Jenkins配置下拉菜单联动效果
在使用Jenkins集成时,经常需要配置一些环境信息,由于测试.线上.预发布需要切换环境和域名,需要在Jenkins中配置下拉菜单联动效果. 首先选择参数化构建过程,然后首先配置环境,环境分为:测试环 ...
- 品优购商城项目(二)AngularJS、自动代码生成器、select2下拉多选框
品优购商城想项目第二阶段 AngularJS.自动代码生成器.select2下拉多选框 完成了课程第三天.第四天的的任务. 1.学习了AngularJs前端的mvc分层思想,js部分分成control ...
- 我的第一个jquery插件:下拉多选框
<!DOCTYPE HTML> <html> <head> <title> New Document </title> <meta n ...
- Jqure实现下拉多选
Web ") { try { ...
- multiSelect 下拉多选插件
multiSelect是一款很好用的下拉多选插件,可以在下拉框中实现多选框,全选及取消全选等方法.使用方法:1.引用 multiSelect.css及 multiSelect.js.下载地址 http ...
- Easyui datagrid combobox输入框下拉(取消)选值和编辑已选值处理
datagrid combobox输入框下拉(取消)选值和编辑已选值处理 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 需求场景 如下,在datagri ...
- EXCEL 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用
EXCEL 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用 在不想变的单元格前加$符号(列标和列数,两个都要加$),变成绝对引用,默认情况是相对引用 L4固定不变的方式:$L$4 M4固定不 ...
- 使用jQuery为文本框、单选框、多选框、下拉框、下拉多选框设值及返回值的处理
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- Spring AI 更新:支持OpenAI的结构化输出,增强对JSON响应的支持
就在昨晚,Spring AI发了个比较重要的更新.由于最近OpenAI推出了结构化输出的功能,可确保 AI 生成的响应严格遵守预定义的 JSON 模式.此功能显着提高了人工智能生成内容在现实应用中的可 ...
- Sy.ExpressionBuilder 动态查询新体验
省流模式,看下对比 //常规查询 var query = users .WhereIf(m => m.UserName.Contains(input.UserName), !string.IsN ...
- Kruskal和Prim模板
例题:P3366 [模板]最小生成树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Kruskal #include <bits/stdc++.h> #define d ...
- 在DLL中封装模板类的问题
在Dll中封装类是用定义一个宏来区分导出标识的 #ifdef DLLCLASS_EXPORTS #define DLL_CLASS _declspec(dllexport) //Dll #else # ...
- MySQL数据库基本操作包括MySQL过程、MySQL声明
MySQL数据库 操纵数据库 查看数据库 show databases; 创建数据库 create database <database_name>; 删除数据库 drop databas ...
- linux下开发编辑器vim常用指令
1.vim的3种模式:编辑模式.插入模式.命令行模式(最后一行模式) 编辑模式:对代码的修改(复制.粘贴.剪切 插入模式:用户编辑代码等等) 命令行模式:保存 退出 另存为等 vim3种模式的切换 最 ...
- WinForm程序中使用Echarts图表
WinForm程序中使用Echarts 实现原理: WebBrowser + HTML 第一步:在窗体中添加WebBrowser控件 1.在工具箱中找到WebBrowser控件,拖动到窗体中 设置We ...
- Go channel 介绍
Go 语言(Golang)中的 chan 是通道(channel)的缩写,用于在不同的 goroutine 之间进行通信.通道允许你在 goroutine 之间传递数据,从而实现同步和共享内存.下面是 ...
- Linux 运行 Bitcoin 软件
首先进入官网 bitcoin.org 下载 Bitcoin Core. 下载得到 tar.gz 文件后解压,并安装: tar xzf bitcoin-25.0-x86_64-linux-gnu.tar ...
- Angular Material 18+ 高级教程 – CDK Observers
前言 Observers 是 Angular Material 对游览器原生 MutationObserver 的上层封装.主要用于监听 add/remove Node. 不熟悉的朋友可以先看这篇 D ...