【填写控制】设置必填项,若为空,则不能保存

懒人办公
懒人办公

创作者俱乐部成员

【案例描述】

下图是两张工作表,【录入】工作表用于填写数据,填写完数据,点击“录入”按钮,可将数据保存到【数据库】工作表中。现在我们需要实现一个“必填项”设置功能,即当在标题中插入包含“必填”二字的批注时,如果其下方的单元格为空,则提示该列不能为空,同时停止保存动作,反之,若批注中没有“必填”二字,则可以为空,可正常保存。

【操作效果】

【JSA代码】

按ALT+F11打开WPS宏编辑器,复制下方代码粘贴到编辑器中。

👉

function Workbook_SheetChange(Sh, rg) //工作表变动事件

{

if(rg.Address(0,0)=='A2'){ //当A2单元格发生变动时

var newDate = new Date(); //获取当前时间

t=newDate.toJSON().split('.')[0].replace('T',' ') //格式化日期时间

Range('d2').Value2 = t //将时间写入D2单元格

}

}

function 录入(){

for(rg of Range("a1:e1")){ //遍历标题行

let cmt = rg.Comment //将标题行中的批注对象赋值给cmt

if(cmt!=undefined && cmt.Text().includes('必填')){ //如果存在批注且批注中包含“必填”二字

if(rg.Offset(1,0).Value2==null){ //如果标题下的第2行不为空

MsgBox("【" + rg.Value2 + "】不能为空!") //提取该列不能为空

return; //结束程序

}

}

}

let sh=Sheets.Item('数据库') //将“数据库”工作表赋值给sh

i = sh.Range('a' + Rows.Count).End(3).Row + 1 //取数据库最后一行数据的下一行号

Sheet2.Range("a" + i + ":e" + i).Value2 = Range("a2:e2").Value2 //写入数据

Range("a2:e2").Value2 = "" //清空录入表数据

MsgBox('保存成功!') //弹出提示

}

【素材下载】

https://kdocs.cn/l/cfvN74MRp145

贵州省
浏览 9660
5
34
分享
34 +1
37
5 +1
全部评论 37
 
WPS_1721056854
第22行第一列引用错误是啥原因大神
· 山东省
回复
 
企业用户_513661289
这个代码无法运行
· 湖南省
回复
 
꧁꫞꯭吃饭睡觉看抖音꫞꧂
太好了
· 广东省
回复
 
穆阳
感谢大神分享,谢谢。
· 河北省
回复
 
A.襄垣大地保险荣玲玉
感谢,好用
· 山西省
回复
 
李大龙``
感谢老师分享
· 山东省
回复
 
回眸一笑・_・ノ百妹疯
感谢大神分享,谢谢。
· 云南省
回复
 
WPS_1701059801
方便
· 广西
回复
 
豪子
不错不错,牛逼
· 陕西省
回复
 
陈阿斗。
不愧是大神
· 辽宁省
回复
 
99*星星*缘
感谢分享
· 青海省
回复
 
林
感谢分享
· 浙江省
回复
 
佳
感谢分享
· 新疆
回复
 
        
感谢分享
· 江苏省
回复
 
新空气
感谢分享
· 云南省
回复
 
王齐海
超实用,感谢分享
· 江西省
回复
 
高伟
刚刚好需要,老师太厉害了
· 浙江省
回复
 
拜仁诚哥
一起学习,一起进步
· 中国
回复
 
未眠的梦
好好向你学习
· 河南省
回复
 
Ajie
学习了,谢谢
· 浙江省
回复