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

Excel VBA 入门demo,单元格json格式校验用 VBA 宏实现对 excel 单元格的 JSON 格式校验

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

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

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

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

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

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224561.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午11:39
下一篇 2026年3月17日 上午11:40


相关推荐

  • Sorting It All Out

    Sorting It All Out

    2021年9月1日
    63
  • 等我干IT发财了,就和你离婚,IT圈子的都收藏转发了

    01 “等我干IT发财了,就和你离婚” 他淡淡地说 听完后,她心里暖暖的, 她想,没有比这更天长地久。 海枯石烂的承诺了。 (因为深知永远也不会发财) ——2017年度最佳微小说奖…

    2021年6月21日
    314
  • navicat15 mac激活码【最新永久激活】

    (navicat15 mac激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
    216
  • window安装memcache扩展

    window安装memcache扩展

    2022年2月23日
    52
  • 3D点云实例分割_3d点云标注软件

    3D点云实例分割_3d点云标注软件3D点云实例分割3D语义分割区分场景中各类对象,3D实例分割区分场景中各类别中的各种个体。近两年来,3D实例分割的关注度越来越高,相应的方法也被接连提出。众多方法的思想主要分为两类:基于候选区域的实例分割(proposal-based)和免候选区域的实例分割(proposal-free)。其中,proposal-based先获取场景中的感兴趣的候选区域,如:3Dboundingboxes等…

    2022年8月23日
    13
  • rocketmq负载均衡机制_rocketmq topic

    rocketmq负载均衡机制_rocketmq topicProducer发送消息时,会首先获取Topic路由信息(通过本地+注册中心拉取),RocketMQ的架构里有多个Broker服务器,而消息队列也会存在于多个Broker服务器里,所以就需要负载均衡策略来将流量尽可能均匀的打到所有服务器上。本章节就介绍一下RocketMQ中常用的四种负载均衡策略。找到Producer发送消息时选择消息队列的逻辑,在类中定义了方法:进入到方法里:上述代码的类中定义了方法:根据源码可以很清楚地看到,默认策略就是依次选择消息队列进行发送,具体的执行细节如下:如何选一个

    2022年10月13日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号