Excel VBA 入门demo,单元格json格式校验

需求才是学习的第一生产力,学习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

 Next
End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值