教你快速入门Excel-宏与VBA(下)
上一篇博客《教你快速入门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(下)相关推荐
- VBA学习1_教你快速入门Excel-宏与VBA(上)
最近在做项目的时候用到了Excel宏和VBA,本着共享的原则,我把收集的资料结合项目实践操作进行了总结之后制作了本教程,旨在帮初学者入门,特别是有一定VB基础的同学,可以通过此教程快速掌握宏和VBA. ...
- 教你快速入门Excel-宏与VBA(上)
最近在做项目的时候用到了Excel宏和VBA,本着共享的原则,我把收集的资料结合项目实践操作进行了总结之后制作了本教程,旨在帮初学者入门,特别是有一定VB基础的同学,可以通过此教程快速掌握宏和VBA. ...
- 手把手教你快速入门知识图谱 - Neo4J教程
手把手教你快速入门知识图谱 - Neo4J教程 前言 1. Neo4J简介 2. Neo4J安装 3. Neo4J使用 4. Cypher查询语言 5. Neo4J实战教程 1. 首先,我们删除数据库 ...
- 天下布魔新手的6点游戏建议 教你快速入门的攻略
天下布魔新手刚下载进入到游戏中难免会懵,因为不知道怎么上手去玩.今天小编就以过来人的视觉,分享一下我当初的入门经验以及所走的弯路.希望各位新手玩家少走弯路,快速上手.并且我总结出了6大点新手建议,本文 ...
- CorelDRAW CORE压缩包X4教你快速入门制作立体五角星
1.打开coreldRAW X4程序 2.在弹出的"欢迎"对话框中选择"新建文件"按钮,新建一个文件 3.点击工具箱中的"多边形工具",进入 ...
- 教你快速入门ElasticSearch,超详细简单~
教你快速入门ElasticSearch,超详细简单~ 一. 初探ElasticSearch 1.1 什么是ElasticSearch? ElasticSearch,简称为ES,它是一个开源的高扩展的分 ...
- CATIA VBA二次开发(一)快速入门之宏脚本
本文内容为作者原创,拒绝以任何形式转载. CATIA宏(Macro)是CATIA向用户提供的一种记录 .重放用户操作的工具(CATIAVBAProject也属于宏,本书中把VBAProject放在CA ...
- EasyPoi快速入门(Excel导入导出工具)
简介: easypoi是一款Excel快速导入导出的工具,最近有所使用,结合了网上的一些用法和官方文档的介绍,在在这里总结一下最简单的esaypoi导入Excel的实现,网上很多教程都已经封装了工具类 ...
- 蓝桥杯嵌入式史上最全最详细教程教你快速入门
文章目录 前言 一.入门篇 二.进阶篇 三.实战篇 总结 前言 从现在开始我将为大家持续更新STM32快速入门的教程,大家参加蓝桥杯或者学习STM32都可以关注我这一套教程,希望大家多多留言,我尽量写 ...
最新文章
- android读取剪切板的方法,Android复制粘贴剪切板内容的一种方法
- 正则表达式抓取文件内容中的http链接地址
- scrapy-splash抓取动态数据例子八
- [Java]Object有哪些公用方法?
- java saveas绝对路径_java实现对文件的各种操作(转)
- 一招教你使用注解处理幂等问题 8种方案解决重复提交
- MySQL高可用之主备同步:javafor循环乘法表
- Laravel学习笔记四-数据库迁移和模型文件
- 昨天购入mac mini一台,4688元港币
- 染整色差技术分析大全
- 基于系统的流量控制(Qos)
- C++11中的std::function和std::bind
- 【转贴】二节棍精典棍花动作详解
- 计算机dll修复工具,百度dll修复工具(百度电脑专家)
- React router v6写法总结
- 十二星座----射手
- uni-app,原生APP,关于苹果APP集成Sign in with Apple(通过Apple登录)后,APP内注册需要强制绑定手机号,审核被拒问题
- 国外服务器使用CDN加速怎么样
- html文字段落加边框线,html给文字加边线框的代码
- 二类分类器构造多类分类器