欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

ExcelVBA入门demo,单元格json格式校验

时间:2023-05-17

需求才是学习的第一生产力,学习VBA是因为要帮测试同学解决excel中的值校验问题。具体来讲,需要对指定单元格做数据格式校验,必须是json,不是json或者格式不对的,要有提示。

解决问题的方案很多,可以写个python脚本,本地执行(测试同学说没有python环境)。也可以在工具工程中,增加一个接口,长传文件做校验。但我觉得上述的方案都太重,如果excel本地就能解决自然是最好的。

OK,那就进入正题,看看是怎么解决的。主要有两步,第一步是基本的宏(VBA)的创建和使用,第二步是具体的执行代码编写。

第一步,宏(VBA)的创建和使用

1、先在页面上创建一个命令按钮,后续点击这个按钮就可以触发宏

2、点击查看代码,编写代码(红框为编写的代码)

不熟悉代码的,可以先写个 

Private Sub CommandButton1_Click()MsgBox "弹窗,测试"End Sub

3、保存&运行

第二步,json格式校验代码编写

先吐槽VBA,这个语言和笔者一样大的年纪,是真的难用。网上的资料也比较零碎,估计在这个任务之后,非特殊情况也不会再尝试VBA了。

OK,直接上代码。

Private Sub CommandButton1_Click()'定义变量' Dim aa, y As Object'错误定义,遇到错误不会报错,而是继续执行后续代码' On Error Resume Next'打印当前选择的单元格的列数' MsgBox (ActiveCell.EntireColumn.Column) col = ActiveCell.EntireColumn.Column'定义一个对象,并设置为js语言,可以使用对应的函数' Set x = CreateObject("scriptControl"): x.Language = "Jscript"'循环对选中列的每个单元格对校验,从第二个开始,第一个是表头' For i = 2 To UsedRange.Rows.Count aa = Cells(i, col) If IsEmpty(aa) Then '为空跳过,因为VBA没有continue关键字,只能用嵌套if语句实现判断跳过' Else If x.eval("eval(" & aa & ")") Is Nothing Then 'MsgBox Cells(i, col), , "对象为空"' 'json格式异常,单元格颜色改为红色' Cells(i, col).Interior.Color = RGB(255, 0, 0) Else 'MsgBox Cells(i, col), , "对象有值"' '单元格格式正常,改回正常白色背景颜色' Cells(i, col).Interior.Color = RGB(255, 255, 255) End If End If NextEnd Sub

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。