返回目录:excel表格制作
依稀记得第一节的时候,小编为了给大家介绍宏的作用时,录制了添加工资表表头的宏,那么到底具体是怎样操作的呢?宏是怎么出来的呢?本节将于大家细谈。
二、本节任务-做一个工资表表头
第一节时,小编已经像大家展示了宏的妙用,本次继续深化,做一个更长的工资表。下面是一个高达159行,158个张姓人士的信息。
三、分析需求
我们要做的事情,就是在每个人上边,插入一个表格加空行,最后做成工资条打印出来。
如果用传统方法,158个人,每次复制一次,插入两次,怕是得半天了把。宏本身就是用来处理重复性工作的,所以这次我们就来试试新方法,录制一个宏。
四、录制宏的原理
录制宏按钮,还是在“开发工具”菜单栏里面
下面有一个“使用相对引用”,这个是啥意思呢?首先,我们来分析一下,录制宏的原理。录制宏,其实就是把你在excel上的操作记录以VBA代码的方式记录下来,比如说你把第一行的数据复制,插入给了第三行,然后又在第三行上面插入了一个空行,这个过程,宏都会以代码的方式记录。
下面,我们先不勾选使用相对引用,点击录制宏后,把刚刚那个过程做一遍。注意:录制前最好把起始位置设置为A2表格,待会再说为啥
录制完后,按“停止录制”,结束本次录制
点击“宏”,多了一个“插入表头的宏”
我们在上面点击一下“执行试试”。
结果发现它又执行了原来的操作,把第一行的姓名,插入到了第三行,又插入了一个空格。这样显然是不满足我们本次训练的要求。
总的来看,录制宏,就是把一个做过的事情,重复做下去。但是单独的做重复的事情,显然达不到我们想要的。所以这里我们来试试相对引用。
五、录制一个相对应用的宏
1.确定起始点
相对引用,每做一次移动,都是相对前一个单元格来说的。比如说上面的步骤。假设我选定A2为起始点,我复制第一行,其实就是相对于A2往上移动了一行,然后选定该行,然后复制。插入到第三行,其实就是相对于第一行,往下移动两行,然后选中,插入。
下面我以A2为起始点,使用相对引用,录制一次宏。
点击编辑,可以看看VBA源码
看不懂也没关系,这里小编只是给大家对比一下是否点击“引用相对使用 ”所带来的区别。可以轻易地看出,使用相对引用,多了一个offset偏移函数,往上一行就是就是(-1,0),往下两行就是(2,0)
2.确定终点
在录制完刚刚那个宏后,如果我们想让他连续起来,就是运行一次,又能插入一次,那不就省事了嘛。
根据上次的经验,我们最好是以表头下面第一个人的姓名作为起始点比较好,那么这次我们就选A5单元格。那么问题来了,每次都去选起始点,是不是很麻烦呀,要是我上次录制宏的那个结束点,刚好落在A5单元格,那不就直接可以运行宏了嘛!
所以说:终止点最好就是第二次的起始点,这样可以省很多事
到这里,我们只需要,每次都使用快捷键,运行一次宏,每次都会把上个人的表头,插入到我这里来了。然后依次运行下去。
六.如何更加省事
就算刚刚使用了宏,可是,掐指一算,好像一共158个人,我还得按157次快捷键,有没有更加省事的方法,让我一次性运行157次呢?
答案,当然是有。既然到了这个份上,我也不得不提前秀一波操作了,省的大家觉得宏还是没什么卵用。
这里,我提前跟大家分享一个知识,那就是for循环
for i = 1 to Num '注释:这里num指一个数字,指从1到num运行Num次
xxxx '中间区的代码,这里指循环运行的部分
Next ’这里表示结束本次循环
点击宏-选中宏-编辑
在sub 和End sub中间插入for循环
Sub 插入表头相对引用() 宏''dim i as Integer '定义i为int型整数for i = 1 to 157 '开始循环157次ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.SelectSelection.CopyActiveCell.Offset(2, 0).Rows("1:1").EntireRow.SelectSelection.Insert Shift:=xlDownActiveCell.Offset(1, 0).Range("A1").SelectNextEnd Sub
然后点击右上角的”x“,再去运行一次宏,你就能快的飞起啦。
注意噢!运行之前一定要选对起始点哈!效果图:
是不是爽的飞起。本次就先讲到这里啦。我们下期再见。
第四节表格下载: 由于不能放外链,只能丢公众号啦。
请关注微信公众号“潮办公”,后台回复“086”即可获取哦。
前期回顾: