上一篇博客《教你快速入门Excel-宏与VBA(上)》,我们主要对Excel宏与VBA进行了简单的介绍和使用说明,这次我们做一个宏与VBA的简单实例,通过这个实例,了解宏与VBA的优势所在,在此之前,读者有必要了解一下Excel中单元格,行和列的命名和VB的一些基础语法,这里我们不做过多的解释。

需求说明:

某学校要进行体育测试,需要根据输入的成绩,自动对应得分,同时自动计算总分,具体表如下:

表一

表二

解决方案:

在表一中输入成绩,自动在表二中查找,该成绩所对应的分数,比如图中张伟的《负重深蹲(次)》项目成绩是40,那么通过查询表二,她的得分应该是97,同时张伟的《负重深蹲(次)》项目得分自动更新为97,对应总分更新为97;

该问题解决依赖简单的录制宏不好实现,这里我们使用VBA编写代码:

模块代码:

点击单元格获取成绩:

'点击时,获取成绩
Public Sub CellsClick(ByVal Target As Range)'选择有效表格的区域,否则跳过If Target.Column < 4 Or Target.Row < 5 Or Target.Column > ActiveSheet.UsedRange.Columns.Count - 1 Or Target.Row > ActiveSheet.UsedRange.Rows.Count ThenExit SubEnd IfDim selectedCol As IntegerDim j As IntegerDim isUpdate As BooleanselectedCol = (Target.Column - 4) \ 2 + 2  '获取 表二 中对应列号'行循环For j = 2 To Worksheets("表二").UsedRange.Columns.Count Step 1If Cells(Target.Row, Target.Column).Value <> "" And Cells(Target.Row, Target.Column).Value = Worksheets("表二").Cells(j, selectedCol).Value Then'MsgBox "你选中了:" & Worksheets("表二").Cells(j, selectedCol).Value & "得分" & Worksheets("表二").Cells(j, 1).ValueCells(Target.Row, Target.Column + 1).Value = Worksheets("表二").Cells(j, 1).ValueisUpdate = TrueEnd IfNextIf Not isUpdate ThenCells(Target.Row, Target.Column + 1).Value = ""End If'列循环,自动求和Dim sum As Doublesum = 0For j = 5 To ActiveSheet.UsedRange.Columns.Count - 3 Step 2sum = sum + Val(Cells(Target.Row, j).Value)NextCells(Target.Row, ActiveSheet.UsedRange.Columns.Count - 1).Value = sum
End Sub

宏函数:激活时,自动获取全部成绩,也可用于填写成绩自动获得得分,但是由于每次都要激活全部单元格进行刷新,所有如果用此方法解决,则会产生Excel反应慢或是半天没有反应的情况,所以该方法只对应到得分按钮即可,即得分按钮指定宏为Worksheet_Activate!

'激活时,自动获取全部成绩
Public Sub WorksheetActivate()Dim selectedCol As IntegerDim r As IntegerDim c As IntegerDim j As IntegerDim isUpdate As Boolean'行循环For r = 5 To ActiveSheet.UsedRange.Rows.Count'列循环For c = 4 To ActiveSheet.UsedRange.Columns.Count - 1 Step 2isUpdate = FalseselectedCol = (c - 4) \ 2 + 2 '获取 表二 中对应列号For j = 2 To Worksheets("U15-16女附").UsedRange.Rows.CountIf Cells(r, c).Value <> "" And Cells(r, c).Value = Worksheets("表二").Cells(j, selectedCol).Value ThenCells(r, c + 1).Value = Worksheets("表二").Cells(j, 1).ValueisUpdate = TrueEnd IfNext'如果没有更新,值为""If Not isUpdate ThenCells(r, c + 1).Value = ""End IfNextNext
End Sub

表一代码:

Private Sub Worksheet_Change(ByVal Target As Range)If Target.Row = Selection.Row - 1 And Target.Column = Selection.Column Or Target.Row = Selection.Row And Target.Column = Selection.Column - 1 Then'修改立即获取成绩CellsClick Target
End IfEnd SubPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)'点击时获取成绩CellsClick Target
End Sub

至此,简单的宏和VBA实例已经讲完了,复杂的问题简单化了吧!所以当你遇到在Excel中需要不断重复一些操作时,就应该考虑使用宏和VBA来解决了,非常方便,更重要的是节省时间呀!

教你快速入门Excel-宏与VBA(下)相关推荐

  1. VBA学习1_教你快速入门Excel-宏与VBA(上)

    最近在做项目的时候用到了Excel宏和VBA,本着共享的原则,我把收集的资料结合项目实践操作进行了总结之后制作了本教程,旨在帮初学者入门,特别是有一定VB基础的同学,可以通过此教程快速掌握宏和VBA. ...

  2. 教你快速入门Excel-宏与VBA(上)

    最近在做项目的时候用到了Excel宏和VBA,本着共享的原则,我把收集的资料结合项目实践操作进行了总结之后制作了本教程,旨在帮初学者入门,特别是有一定VB基础的同学,可以通过此教程快速掌握宏和VBA. ...

  3. 手把手教你快速入门知识图谱 - Neo4J教程

    手把手教你快速入门知识图谱 - Neo4J教程 前言 1. Neo4J简介 2. Neo4J安装 3. Neo4J使用 4. Cypher查询语言 5. Neo4J实战教程 1. 首先,我们删除数据库 ...

  4. 天下布魔新手的6点游戏建议 教你快速入门的攻略

    天下布魔新手刚下载进入到游戏中难免会懵,因为不知道怎么上手去玩.今天小编就以过来人的视觉,分享一下我当初的入门经验以及所走的弯路.希望各位新手玩家少走弯路,快速上手.并且我总结出了6大点新手建议,本文 ...

  5. CorelDRAW CORE压缩包X4教你快速入门制作立体五角星

    1.打开coreldRAW X4程序 2.在弹出的"欢迎"对话框中选择"新建文件"按钮,新建一个文件 3.点击工具箱中的"多边形工具",进入 ...

  6. 教你快速入门ElasticSearch,超详细简单~

    教你快速入门ElasticSearch,超详细简单~ 一. 初探ElasticSearch 1.1 什么是ElasticSearch? ElasticSearch,简称为ES,它是一个开源的高扩展的分 ...

  7. CATIA VBA二次开发(一)快速入门之宏脚本

    本文内容为作者原创,拒绝以任何形式转载. CATIA宏(Macro)是CATIA向用户提供的一种记录 .重放用户操作的工具(CATIAVBAProject也属于宏,本书中把VBAProject放在CA ...

  8. EasyPoi快速入门(Excel导入导出工具)

    简介: easypoi是一款Excel快速导入导出的工具,最近有所使用,结合了网上的一些用法和官方文档的介绍,在在这里总结一下最简单的esaypoi导入Excel的实现,网上很多教程都已经封装了工具类 ...

  9. 蓝桥杯嵌入式史上最全最详细教程教你快速入门

    文章目录 前言 一.入门篇 二.进阶篇 三.实战篇 总结 前言 从现在开始我将为大家持续更新STM32快速入门的教程,大家参加蓝桥杯或者学习STM32都可以关注我这一套教程,希望大家多多留言,我尽量写 ...

最新文章

  1. android读取剪切板的方法,Android复制粘贴剪切板内容的一种方法
  2. 正则表达式抓取文件内容中的http链接地址
  3. scrapy-splash抓取动态数据例子八
  4. [Java]Object有哪些公用方法?
  5. java saveas绝对路径_java实现对文件的各种操作(转)
  6. 一招教你使用注解处理幂等问题 8种方案解决重复提交
  7. MySQL高可用之主备同步:javafor循环乘法表
  8. Laravel学习笔记四-数据库迁移和模型文件
  9. 昨天购入mac mini一台,4688元港币
  10. 染整色差技术分析大全
  11. 基于系统的流量控制(Qos)
  12. C++11中的std::function和std::bind
  13. 【转贴】二节棍精典棍花动作详解
  14. 计算机dll修复工具,百度dll修复工具(百度电脑专家)
  15. React router v6写法总结
  16. 十二星座----射手
  17. uni-app,原生APP,关于苹果APP集成Sign in with Apple(通过Apple登录)后,APP内注册需要强制绑定手机号,审核被拒问题
  18. 国外服务器使用CDN加速怎么样
  19. html文字段落加边框线,html给文字加边线框的代码
  20. 二类分类器构造多类分类器

热门文章

  1. 全角半角符号引发的Entity Framework奇遇记
  2. 怎么用计算机作word文档,电脑上怎么用Word文档
  3. 25匹马赛跑确定前五匹马的问题
  4. 一头扎进springboot学习笔记
  5. 实验记录配置华为NAT Server
  6. 【51nod_3121】小陶与杠铃片
  7. 「2B」的产品到底是什么
  8. 如何查看自己steam库里游戏是哪个区的
  9. 大数据的过去、现在和未来:万字长文解读《大数据四十二条》
  10. 深度总结 | 知识蒸馏在推荐系统中的应用