还记得之前写过的关于制作工资条的方法吗(原文)?有一种一劳永逸的方法没有介绍,那就是自动工资条。
在讲解这种方法之前,我们来回忆一下最传统的制作工资条并打印的方法:手动插入行->复制、插入工资表头->设置工资条所在单元格的格式->逐条打印工资条。我们会发现,其实过程中只需要几个相同的命令,操作虽然简单,但是效率之低简直令人发指。
在Excel中,像以上这种重复的操作,随处可见。我们会联想,生活中也有类似的场景。比如街边卖水果的商贩,为了吸引行人的注意力,整天都在重复着相同的叫卖声。一遍又一遍的吆喝着广告语,念到后来,嗓子已经麻木了,完全不走心了,嗓子都冒烟了。
为了解决这一问题,聪明的商贩想到了用喇叭把叫卖的声音录制下来,然后按下录音喇叭上的播放按钮,喇叭就会自动重复的播放录下的语音。这样商贩就会有更多的时间和经历去忙其他的事情了。
工作中的技巧源于生活中的启发,那么Excel中是不是也有相似的神操作呢?当然有了,Excel中也有类似的“录音设备”,使用录音设备可以记录下在Excel中的操作,当需要重复相同操作时,只需要像播放声音一样“播放”这段被录制的操作就可以了。
在Excel中,被录制的一串操作叫做宏,用来录制的工具叫做宏录制器。
一、Excel VBA基础操作
1、录制宏
(1)选中工资表的A1单元格,执行【开发工具】-【录制宏】命令,调出【录制宏】对话框
(2)设置宏的名称,方便以后的使用,保存在当前的工作簿,确定;
(3)引用模式切换为相对应用;
(4)执行一遍制作的过程:在第2条工资记录前插入两个空行;复制工资表头到记录前的空行中;选中A4,即剩余工作表头的第1个单元格,【停止录制】
2、宏重现
3.添加按钮,并指定宏
效果:
注意:将文件保存为.xlsm格式
思考:我们会想,如果数据很多的话,光点击按钮也很费事,怎样做到点击一下就完成呢?这就涉及到代码的部分了,循环操作。
二、Excel VBA代码操作
代码部分会在以后分解讲解。
查看代码的方法:【选中按钮】-【Visual Basic】
生成工资条代码:
Public Sub gongzitiao()
Dim i As Integer, row As Integer, col As Integer
t = Timer '计时器
Application.ScreenUpdating = False '禁止刷新
row = Range("a1").CurrentRegion.Rows.Count '当前区域A1行数
col = Range("a1").CurrentRegion.Columns.Count
For i = row To 3 Step -1
Rows(i).Insert '对象.方法插入行
Range(Cells(1, 1), Cells(1, col)).Copy Destination:=Range(Cells(i, 1), Cells(i, col))
Next
If MsgBox("是否插入空行", vbYesNo + vbQuestion, "制作工资表") = vbYes Then
For i = row * 2 - 3 To 3 Step -2
Rows(i).Insert
Next
Else
GoTo home
End If
home:
MsgBox Format(Timer - t, "0.00") & "秒 生成工资条完毕"
'*********2020年4月20日,chentom2020
End Sub
恢复原状代码:
Public Sub recover()
Application.ScreenUpdating = False
For i = Cells(Rows.Count, 1).End(xlUp).row To 2 Step -1
If Cells(i, 1) = Range("a1") Or Len(Cells(i, 1)) = 0 Then '判断
Rows(i).Delete
End If
Next
Application.ScreenUpdating = True
MsgBox "恢复初始状态"
'*********2020年4月20日,chentom2020
End Sub
效果: